如何使用黄瓜-朱尼特设置我的黄瓜特征的路径?

我尝试用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.Optionspom.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>

我错过了什么吗?

更新我错过了一些东西:黄瓜功能文件必须在子目录中。否则,它不会被 junit 测试拾取。src/test/resources/mypackage/

当我将它们放在同一目录src/main/test/中时,我可以运行我的功能测试,所以这对我来说不是一个阻碍因素。但我想了解整个设置。


答案 1

看看我在这里的问题:

您可以通过在选项注记中设置要素属性来指定类路径上的位置,例如

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

编辑:

在新版本中,代码是

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

答案 2

该选项在Cucumber文档中并不明显(它也不在JavaDoc中),我最终从CLI文档中推断出它(编辑:链接已死,找不到等效项),其中记录了其他位置选项。请参阅文档中的部分。如何从多模块Maven项目的另一个模块获取功能定义也不清楚。classpathList configuration options

这就是我在 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/


推荐