문제

나는 Java와 Maven을 사용하여 첫 번째 실행 가능한 사양을 구축하려고 합니다.다음 구조로 간단한 프로젝트를 만들었습니다.

specification
|-src
  |-test
    |-java
      |-mypackage
        |-MyFeatureTest.java
    |-resources
      |-MyFeature.feature

junit 테스트에서 MyFeatureTest.java 나는 이것을 가지고있다:

import org.junit.runner.RunWith;
import cucumber.junit.Cucumber;

@RunWith(Cucumber.class)
public class HomepageTest {
}

지금 https://github.com/cucumber/cucumber-jvm/wiki/IDE-support 다음 줄을 추가해야 한다고 말합니다.

@Cucumber.Options(paths={"my/super.feature:34"})

나는 그것을 수정하려고 노력했습니다.

@Cucumber.Options(paths={"src/test/resources/"})

하지만 주석 @Cucumber.Options 전혀 사용할 수 없습니다.나의 pom.xml 다음과 같은 종속성이 있습니다.

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.10</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>info.cukes</groupId>
  <artifactId>cucumber-java</artifactId>
  <version>1.0.0.RC20</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>info.cukes</groupId>
  <artifactId>cucumber-junit</artifactId>
  <version>1.0.0.RC20</version>
  <scope>test</scope>
</dependency>

뭔가 빠졌나요?

업데이트 나는 뭔가를 놓치고 있었다:오이 기능 파일은 하위 디렉터리에 있어야 합니다. src/test/resources/mypackage/.그렇지 않으면 junit 테스트에서 선택되지 않습니다.

기능 테스트를 동일한 디렉터리에 넣으면 실행할 수 있습니다. src/main/test/, 그래서 그것은 나에게 차단제가 아닙니다.하지만 전체 설정을 이해하고 싶습니다.

도움이 되었습니까?

해결책

내 질문을 봅니다 여기 :

와 같은 옵션 주석에서 기능 속성을 설정하여 클래스 경로에서 위치를 지정할 수 있습니다.

@Cucumber.Options(features="src/test/resources")
.

편집 :

새 버전 코드는

@CucumberOptions(features="src/test/resources")
.

다른 팁

그만큼 classpath 옵션은 Cucumber 문서에서 명확하지 않습니다(JavaDoc에도 없습니다). CLI 문서, 다른 위치 옵션이 문서화되어 있습니다.참조 List configuration options 섹션을 참조하세요.다중 모듈 Maven 프로젝트의 다른 모듈에서 기능 정의를 얻는 방법도 명확하지 않습니다.

이것이 내가 Maven 다중 모듈 프로젝트를 진행하게 된 이유입니다(IDE 및 명령줄에서 실행).

@CucumberOptions(
        features = {"classpath:product"},
        //...
)
public class RunCukesTest extends AbstractTestNGSpringContextTests {

내 기능 파일이 있는 위치

main-project
    sub-module-1
        src/test/java/com/foo/
            RunCukesTest.java
        src/test/resources/product/
            feature_1.feature
            feature_2.feature
    sub-module-2
        ...

안보여서 다행이다 src/test/resources 경로에서.선행이 없다는 점에 유의하세요. / 경로에서.클래스 경로(현재 작업 디렉토리가 아닌)가 잘 정의되어야 하기 때문에 클래스 경로를 사용하는 것이 덜 불안정합니다.

를 사용할 수 있습니다.

@CucumberOptions(
    format = "pretty",
    tags = {"~@Ignore"},
    features = "src/test/resources/com/"  //refer to Feature file
)
.

패키지의 모든 기능 파일을 스캔하려면

확인, 나는 월요일 아침에만 이것을 넣을 수 있습니다 ... 사용한 디렉토리 레이아웃은 올바르지 않았습니다. 오이 기능을 내 패키지 구조와 일치하는 하위 디렉토리에 넣는 것을 잊었습니다.

src/test/resources/에서 필요한 패키지 디렉토리를 생성했는지 확인하십시오!

를 사용하면

import cucumber.api.CucumberOptions;
.

pom.xml에 다음을 추가해야합니다. 그렇지 않으면 "MVN Test"가 작동하지 않습니다.그리고 당신은 IDE에서만 테스트를 실행할 수 있습니다. 참조 : https://github.com/cucumber/cucumber-java.-skeleton / blob / master / pom.xml

<properties>
    <java.version>1.7</java.version>
    <junit.version>4.12</junit.version>
    <cucumber.version>1.2.2</cucumber.version>
    <maven.compiler.version>3.3</maven.compiler.version>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven.compiler.version}</version>
            <configuration>
                <encoding>UTF-8</encoding>
                <source>${java.version}</source>
                <target>${java.version}</target>
                <compilerArgument>-Werror</compilerArgument>
            </configuration>
        </plugin>
    </plugins>
</build>
.

또는 당신은 https://cucumber.io와 같은 cucumberoptions 인수를 만들 수 있습니다./ docs / reference / jvm # cli-runner cucumber.api.cli.main.run ()에 설명되어 있습니다.이것은 작은 예입니다.

String arg = "classpath:MyFeature.feature --dry-run";
String[] args = arg.split(" ");
cucumber.api.cli.Main.run(args, Thread.currentThread().getContextClassLoader());
.

정미서 테스트에서 사용하십시오.따라서 다른 인수와 함께 각 TestClass에 대해 별도의 클래스를 만들 필요가 없습니다.

src / test / java 아래에 기능 파일을 넣어 러너와 단계 파일 또는 src / main / java 에 넣으면 문제가 해결됩니다.

감사합니다 : :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top