Mam projekt z ogórkiem i maven również używam JUnit.Uruchamianie testów ogórek bezpośrednio z pliku wykonywalnego słoiczka
Jestem w stanie uruchomić i zbudować mój projekt z powodzeniem z Eclipse.
Teraz chcę uruchomić test z wiersza poleceń w innym systemie, który nie powinien (powinien) mieć zainstalowanego zaćmienia lub ogórka. Mam pomysł, że możemy stworzyć JAR ze słoika, możemy uruchomić testy za pomocą poleceń java cli.
Poniżej znajdują się kombinacje Próbuję uruchomić z moich testów, również jestem wklejając pom.xml i plik RunCukesTest.java ..
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pmc</groupId>
<artifactId>se</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>storeEnabler</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-testng</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.52.0</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.11-beta3</version>
</dependency>
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.8.0</version>
</dependency>
</dependencies>
<build>
<testResources>
<testResource>
<directory>${project.basedir}/src/test/java</directory>
</testResource>
<testResource>
<directory>${project.basedir}/src/test/resource</directory>
</testResource>
</testResources>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork>
<executable>C:\Program Files\Java\jdk1.8.0_60\bin\javac.exe</executable>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.18</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>cucumber.api.cli.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
RunCukesTest.java
package se.stepDefinations;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resource/features/Printing.feature:117", plugin = { "pretty",
"html:target/cucumber-html-report" }, glue = { "se.stepDefinations" }, tags = {})
public class RunCukesTest {
public static void main(String[] args) throws Exception {
}
}
- Dodałem JUNIT Jar w ścieżce klasy.
jestem generowania słoików na 2 sposoby,
1) Eksportowanie JAR użyciu -> Projekt -> Export -> JAR Plik Wybór klasy MAIN w ostatnim etapie jak: RunCukesTest jak zdefiniowano metodę main tutaj do punktu wejścia (mamy wymagać to główne metody w tej klasie ???)
Po eksporcie, używam poniżej polecenia
1,1 java -jar xyz.jar
otrzymuję błąd: NoClassDef znaleziono: org/JUnit/runner/JUnitCore
Więc wpadłem to w ten sposób:
1,2 java -cp xyz.jar;junit-4.12.jar org.junit.runner.JUnitCore
Mówi,
JUnit version 4.12
Time:0.001
OK(0 tests)
To nadal nie działał, więc dołączany do RunCukesTest nazw plików w ostatniej,
1,3 java -cp xyz.jar;junit-4.12.jar org.junit.runner.JUnitCore se.stepDefinations.RunCukesTest
Dało mi to błąd: wpisz cucumber.api.junit. Ogórek nie występuje
2) Więc zrezygnowałem z opcji n dla eksportu słoika i próbuję teraz użyć JAR-a z maven Build. I wybranych POM do działania z Mavenie zbudowano i utworzona 2 słoje w katalogu docelowym,
1 o nazwie xyz-0.0.1-zdjęć za 16kb nawzajem 2 z
xyz-0,0.1-SNAPSHOT-jar-z zależnościami z 33MB
1) Pobiegłem większy plik z zależnościami, używając
java -jar xyz-0.0.1-SNAPSHOT-jar-with-dependencies.jar
Dało mi wiadomość:
Nie mam ścieżkę do funkcji katalog
2) Próbowałem więc dołączyć przestrzeń nazw do pliku RunCukesTest,
java -jar xyz-0.0.1-SNAPSHOT-jar-with-dependencies.jar se.stepDefinations.RunCukesTest
otrzymałem błąd: nie znaleziono pliku lub katalogu
, jako oczywiście jak mówi o błędzie, że stara się znaleźć funkcję wewnątrz folderu docelowego.
Ponownie, chcę uruchomić JAR niezależnie od takich zależności plików projektu w jakimkolwiek innym komputerze, jak plik wykonywalny.
Każda pomoc zostanie doceniona. Dzięki.