我正在使用Cucumber进行测试。如何仅重新运行失败的测试?
答案 0 :(得分:57)
使用重新运行格式化程序运行Cucumber:
cucumber -f rerun --out rerun.txt
它会将所有失败方案的位置输出到此文件。
然后您可以使用
重新运行它们cucumber @rerun.txt
答案 1 :(得分:5)
这是我简单明了的解决方案。
第1步:使用rerun:target/rerun.txt
编写如下所述的黄瓜java文件。 Cucumber在rerun.txt
中写入失败的方案行号,如下所示。
features/MyScenaios.feature:25
features/MyScenaios.feature:45
稍后我们可以在第2步中使用此文件。将此文件命名为MyScenarioTests.java
。这是运行标记方案的主文件。如果您的方案测试用例失败,MyScenarioTests.java
将在目标目录下写入/标记rerun.txt
。
@RunWith(Cucumber.class)
@CucumberOptions(
monochrome = true,
features = "classpath:features",
plugin = {"pretty", "html:target/cucumber-reports",
"json:target/cucumber.json",
"rerun:target/rerun.txt"} //Creates a text file with failed scenarios
,tags = "@mytag"
)
public class MyScenarioTests {
}
第2步:创建另一个方案文件,如下所示。我们将其称为FailedScenarios.java
。每当您发现任何失败的情况时都会运行此文件。此文件将使用target/rerun.txt
作为运行方案的输入。
@RunWith(Cucumber.class)
@CucumberOptions(
monochrome = true,
features = "@target/rerun.txt", //Cucumber picks the failed scenarios from this file
format = {"pretty", "html:target/site/cucumber-pretty",
"json:target/cucumber.json"}
)
public class FailedScenarios {
}
如果您发现任何失败的情况,每次都会在第2步
中运行该文件答案 2 :(得分:1)
task cucumber() {
dependsOn assemble, compileTestJava
doLast {
javaexec {
main = "io.cucumber.core.cli.Main"
classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
args = ['--plugin', 'json:target/cucumber-reports/json/cucumber.json',
'--plugin', "rerun:target/rerun.txt",
'--glue', 'steps',
'src/test/resources']
}
}
}
task cucumberRerunFailed() {
doLast {
javaexec {
main = "io.cucumber.core.cli.Main"
classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
args = ['--plugin', 'json:target/cucumber-reports/json/cucumber.json',
'@target/rerun.txt']
}
}
}
答案 3 :(得分:0)
至少需要1.2.0版才能使用@ target / rerun.txt新功能。之后,只需创建一个运行在最后并使用此文件的运行器。此外,如果您使用的是Jenkins,则可以在随机故障功能上添加标记,这样构建就不会失败,除非在运行两次之后。
答案 4 :(得分:0)
我知道这很旧,但我首先在这里找到了自己的方法,然后找到了更新的答案(不是公认的 Cyril Duchon-Doris 的答案): https://stackoverflow.com/a/41174252/215789
从 Cucumber 3.0 开始,您可以使用 --retry
指定重试失败场景的次数。
https://cucumber.io/blog/open-source/announcing-cucumber-ruby-3-0-0/
只需将其添加到您的黄瓜命令中即可:
cucumber ... --retry 2