我正在运行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 {
}
答案 0 :(得分:3)
将第一个测试跑步者的要素文件位置更改为features = "."
这将使'rerun.txt'要使用正确的特征文件路径进行更新。