黄瓜java + testng中仅自动重新运行失败的场景

时间:2018-02-07 09:47:40

标签: testing cucumber-java

如何才能使失败的场景在失败时自动重新运行?

以下是我正在做的事情的一些线索:

  • 在运行时从命令行传递TestRunner类到cuc-testng.xml文件。
  • 我可以在方案失败后看到rerun.txt文件,feature/GM/TK/payment.feature:71(指向失败的方案)但失败的方案不会自动重新运行。

“TestRunner”java文件

@RunWith(Cucumber.class)
@CucumberOptions(strict = true, 
    features = { "src/test/resources/" },  //feature file location
    glue = { "com/test/stepdefs", "com.test.cucumber.hooks" },  //hooks and stepdef location
    plugin = { "json:target/cucumber-report-composite.json", "pretty", "rerun:target/rerun.txt"}
)
public class CucumberTestRunner extends AbstractTestNGCucumberTests
{
}

从rerun.txt文件重新运行的“RunFailedTest”类

@RunWith(Cucumber.class)
@CucumberOptions(
    strict = false,
    features = { "@target/rerun.txt"  },  //rerun location
    glue = { "com/test/stepdefs", "com.test.cucumber.hooks" }, //hooks and stepdef location
    plugin = {"pretty", "html:target/site/cucumber-pretty", "json:target/cucumber.json"}
)
class RunFailedTest
{
}

2 个答案:

答案 0 :(得分:0)

您可以使用gherkin with qaf来实现它,它可以为可以用于重新运行的失败方案生成testng XML配置。它还支持通过设置retry.count属性重新运行失败的方案。

答案 1 :(得分:0)

使用黄瓜+ Maven + TestNG 首先,您不需要在问题中提到的“ @RunWith(Cucumber.class)”,如果您使用的是TestNG,则只需要"@CucumberOptions"。 当您开始执行测试时,所有场景失败都将按照Runner文件中提到的配置写入文件"target/rerun.txt"。 现在,您需要再创建一个Runner文件(例如-“ FailureRunner”),并在此文件中以{-> "@target/rerun.txt"的形式提供features = { "@target/rerun.txt" }的路径(该路径已包含故障场景的详细信息)。

现在,您需要更新TestNG.xml文件,并包括以下“ FailureRunner”-

    <class name="Class path of Your First Runner Class name" />
    <class name="class path of FailureRunner Class" />

完成上述所有步骤并运行执行后,第一次执行将在"target/rerun.txt"中写入失败方案,然后,将执行“ FailureRunner”类,它将拾取{{1 }}文件,因此将执行失败方案。

我已经以同样的方式执行了,并且运行良好,请告诉我它是否有帮助!