黄瓜中的Rerun.txt指的是classpath而不是Feature文件夹

时间:2016-04-21 13:20:15

标签: java maven jenkins cucumber

我正在运行Cucumber测试(使用Maven,在Jenkins中),并按照以下说明将失败的场景输出到target / rerun.txt:https://github.com/cucumber/cucumber-jvm/issues/890

它创建rerun.txt并输入失败的场景,但输入为:features / name.feature:2。然后重新运行尝试将它们作为classpath / name.feature运行,并且无法看到它们位于src / test / resources / features中。

如果我将功能文件放在类路径中,我会得到一个不一致的过滤器错误(可能是因为我在第一次调用中使用标签而第二次调用中使用了文本)。

如何让Cucumber输出正确的功能路径,或者让它根据rerun.txt查找功能?

错误:

  

运行com.xxx.cucumber._RunCukesTest   测试运行:1,失败:0,错误:1,跳过:0,经过的时间:0.002秒<<< FAILURE!

     

initializationError(com.xxx.cucumber._RunCukesTest)经过的时间:0秒<<< ERROR!

     

java.lang.IllegalArgumentException:在文件系统或类路径上找不到:不是文件或目录:classpath \ SubFolder \ Test1.feature,

     

找不到资源:classpath:SubFolder / Test1.feature

其他信息: 所有初始调用测试都是通过标签完成的。 所有功能都在classpath / src / test / resources / features中的子文件夹中 这个测试必须每天自动在Jenkins中运行。

第一次运行使用:

@RunWith(Cucumber.class)
@CucumberOptions(
    strict = false,
    features={"src/test/resources/features/"},
    snippets=SnippetType.CAMELCASE, 
    plugin = { "pretty", "json:target/cucumber-reports/test-report.json", "html:target/cucumber-reports",
            "rerun:target/rerun.txt"})
public class RunCukesTest {
}

第二轮失败的场景使用了这个:

@RunWith(Cucumber.class)
@CucumberOptions(
    strict = false,
    features={"@target/rerun.txt"},
    snippets=SnippetType.CAMELCASE, 
    plugin = {"pretty", "json:target/cucumber-reports/test-report.json", "html:target/cucumber-reports"})
public class _RunCukesTest {
}

1 个答案:

答案 0 :(得分:3)

将第一个测试跑步者的要素文件位置更改为features = "." 这将使'rerun.txt'要使用正确的特征文件路径进行更新。