오이와 메이븐 프로젝트도 있는데 JUnit을 사용하고 있습니다.
Eclipse에서 프로젝트를 성공적으로 실행하고 빌드 할 수 있습니다.
이 클립이나 오이가 설치되어 있지 않은 다른 시스템의 커맨드 라인에서 테스트를 실행하고 싶습니다. jar에서 JAR을 만들 수 있다는 아이디어가 있습니다. java cli 명령으로 테스트를 실행할 수 있습니다.
아래에서 테스트를 실행하려는 조합은 다음과 같습니다. 또한 pom.xml 및 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 {
}
}
- JUNIT Jar를 클래스 경로에 추가했습니다.
2 가지 방법으로 항아리를 생성하고 있습니다
1)->Project->Export->JAR 파일을 사용하여 JAR 내보내기 마지막 단계에서 MAIN 클래스 선택 : RunCukesTest : 진입 점에 대한 주요 메소드를 여기에서 정의 했으므로 (이 클래스에서이 메인 메소드가 필요합니까 ???)
내 보낸 후 아래 명령을 실행하고 있습니다.
1.1
java -jar xyz.jar
오류가 발생합니다 : NoClassDef를 찾았습니다 : org/junit/runner/JUnitCore
따라서이 방법으로 실행했습니다 :
1.2
java -cp xyz.jar;junit-4.12.jar org.junit.runner.JUnitCore
말 했어요
JUnit version 4.12
Time:0.001
OK(0 tests)
여전히 작동하지 않았으므로 마지막에 RunCukesTest 파일 네임 스페이스를 추가했습니다.
1.3
java -cp xyz.jar;junit-4.12.jar org.junit.runner.JUnitCore se.stepDefinations.RunCukesTest
나에게 오류가 발생했습니다 : cucumber.api.junit.Cucumber not present
2) 그래서 jar 내보내기 옵션을 포기했으며 이제 maven Build에서 JAR을 사용하려고합니다. Maven Build로 실행할 POM을 선택하고 대상 폴더에 2 개의 jar을 생성했습니다.
와이즈 비즈1) 나는 의존성을 가지고 더 큰 파일을 실행했다
1 with name xyz-0.0.1-SNAPSHOT with 16kb another with 2nd with
xyz-0.0.1-SNAPSHOT-jar-with-dependencies with 33mb
나에게 메시지를 주었다 :
와이즈 비즈2) 그래서 네임 스페이스를 RunCukesTest 파일에 추가하려고 시도했습니다.
java -jar xyz-0.0.1-SNAPSHOT-jar-with-dependencies.jar
와이즈 비즈
물론 오류가 말했듯이 대상 폴더에서 기능을 찾으려고합니다.
다시 실행 파일과 같은 다른 컴퓨터에서 이러한 프로젝트 파일 종속성과 독립적으로 JAR을 실행하고 싶습니다.
도움이 될 것입니다. 감사합니다.
Got no path to feature directory
- 답변 # 1
- 답변 # 2
@SpringBootApplication public class Application { public static void main(final String[] args) throws Throwable { // SpringApplication.run(TestApplication.class, args); JUnitCore.main(CucumberTest.class.getCanonicalName()); } }
를 참조하십시오.
관련 자료
- Maven으로 Cucumber에서 테스트 하위 세트 실행
- java - Maven 테스트 실행
- r - 루프를 매트릭스로 변경 한 다음 테스트 실행
- Angular Jasmine 테스트를 실행하는 Gitlab CI는 오류없이 충돌합니다
- 배포 된 HTTPS 공급자에 대해 Pact 공급자 테스트 실행
- 셀에 데이터를 직접 입력하면 Excel VBA가 실행되지 않음
- 관련 확장자를 가진 파일을 실행하는 Python 실행 파일
- gradlew를 사용하여 Android Studio VS에서 실행할 때 계측 단위 테스트의 결과가 다릅니다
- Azure Pipelines에서 Selenium 테스트를 실행할 때 기본 창 크기는 얼마입니까?
- junit5 - 테스트 실행 문제
- .Env.Env.Testing 파일은 Laravel App에 대한 PHPUnit 테스트를 실행할 때 무시되었습니다.
- npm - Babel 7로 Mocha 6 ES6 테스트를 실행하려면 어떻게 설정합니까?
- c - windows에서 sdl 게임을 실행하기위한 실행 파일을 만들 수 없습니다 (오류 - sdl_main의 이전 선언은…)
- html - 오이 검사 실패의 원인을 알 수 없습니까?
- junit5 테스트를 실행하는 eclipse에서 javalangsecurityexception이 발생 함 - "orghamcrestmatchers"클래스
- maven - 단위 단계를 실행하는 동안 오이 시나리오를 건너 뛸 수있는 방법이 있습니까?
- android - 루트 디렉토리에서 make 명령을 실행할 때 다른 디렉토리에서 실행 파일을 실행하는 방법은 무엇입니까?
- nunit - 스펙 플로우 테스트를 연속으로 실행하는 중 오류
- angular - Karma가 Jenkins에서 테스트를 실행하지 않음
- Unit Tests는 실행 중에 올바르게 작동하지만 Android Studio 4.1에서 디버깅 할 때는 작동하지 않음
- java : 한 모듈의 오이 단계 정의를 다른 maven 모듈로 가져오기
- java : CucumberOptions는 유형으로 확인할 수 없습니다.
- java : Maven -TestNG가 있는 오이. 태그로 오이 테스트를 시작한 후 -모든 테스트 @Test는 오이 하나와 동시에 시작됩니다.
- Cucumber Java8: "PendingException: TODO:implemente me"가 표시되는 이유는 무엇입니까?
- selenium : 오이 출력에 대한 Intellij Maven 구성 오류를 해결하는 방법은 무엇입니까?
- java : 캡처하지 않은 오이 표현
- java : Intellij Community Maven Pom.xml 오류 오이 카이 JAR 버전 충돌 제안
- java : Testng가있는 오이 -여러 태그를 실행할 수 없습니다
- maven : Gherkin의 테이블
- Maven을 통해 실행할 때 오이 HTML 보고서가 생성되지 않습니다.
당신이 생각하는 문제를 두 부분으로 나눌 것입니다.
실행 가능한 jar 생성
나만의 주요 방법으로 오이를 실행
Maven을 사용하여 실행 가능한 jar 작성은 다른 방법으로 수행 할 수 있습니다. 이를 수행하는 한 가지 방법이 여기에 설명되어 있습니다. http://www.thinkcode.se/blog/2011/03/05/create-an- executable-jar-from-maven
이것은 다음과 같은 명령 행에서 무언가를 실행하는 것에 초점을 맞춘 작은 예입니다 :
java -jar executable-example.jar
이 예에는 모든 종속성이 포함되어 있습니다. 그들은 모두 같은 항아리에 묶여 있습니다. 추가 병이 필요 없습니다.다음 단계는 메인 메소드에서 Cucumber를 실행하는 것입니다. 내 접근 방식은 Cucumber의 명령 줄 버전에 사용되는 Cucumber 기본 방법을 실행하는 main을 작성하는 것입니다. 커맨드 라인에서 오이를 운영하는 데 사용되는 주요 방법은
cucumber-java
에 있습니다. 도서관.cucumber.api.cli.Main
에서 찾을 수 있습니다다른 메인 메소드에서 메인 메소드를 실행하는 방법은 다음과 같습니다 :
여기서 arguments는 항상 Cucumber를 실행하려는 명령 줄 인수입니다.
이 두 단계를 수행하면 jar를 실행할 수있는 곳이라면 어디든지 자신의 실행 가능한 jar에서 Cucumber를 실행할 수 있어야합니다.
폼에서 Cucumber 용 라이브러리 버전을 믹싱하고 있음에 유의하십시오. 모든 라이브러리의 최신 버전을 사용합니다.
cucumber-java
비교cucumber-testng
그리고cucumber-junit
. 최신 Cucumber 버전은 1.2.4입니다. 나는 그들 모두를 위해 그것을 사용할 것입니다.명령 줄에서 Cucumber를 실행하는 방법에 대한 자세한 내용은 https://cucumber.io/docs/cucumber/api/#from-the-command-line