我们正在使用基于Java的Cucumber项目。
想知道是否有快速失败选项。 如果我正在运行10个场景&如果第二次测试失败,我的测试应该在第二次测试后停止。
static boolean prevScenarioFailed = false;
@Before
public void teardown(Scenario scenario) throws Exception {
prevScenarioFailed = scenario.isFailed();
if(env.getProperty("fail_fast").toString().equalsIgnoreCase( "true")) {
if (prevScenarioFailed) {
throw new RuntimeException("Fail!");
}
}
}
答案 0 :(得分:2)
我假设跑步者在 junit 。
案例1 - 在特定方案失败后跳过所有方案。
在功能文件中要在失败时快速失败的方案中使用类似(@SkipCheck
)的特定标记。
在stepdefinition or hook class
。
private static boolean skipFlag = false;
@Before
public void beforeSkipCount() {
if(skipFlag)
Assume.assumeTrue(false);
}
@After
public void afterSkipCount(Scenario scen) {
if(scen.getSourceTagNames().contains("@SkipCheck") && scen.isFailed())
skipFlag = true;
}
案例2 - 在特定情景计数失败后跳过所有方案。
private static int skipCount = 0;
private static final int ALLOWED_FAIL_TEST_COUNT = 2;
@Before
public void beforeSkipCount() {
if(skipCount == ALLOWED_FAIL_TEST_COUNT)
Assume.assumeTrue(false);
}
@After
public void afterSkipCount(Scenario scen) {
if(scen.isFailed())
skipCount++;
}
如果项目中有多个运行程序并且想要跳过其中的方案,则需要将Before
挂钩的内容复制到junit BeforeClass
挂钩。相应地更改标志的访问权限。