我正在使用cucumber-jvm编写测试,我希望系统停止在第一个失败的场景上运行测试。我找到了为Cucumber Ruby编写的示例代码,它通过After钩子完成。我正在寻找正确的java类和方法来调用,这相当于在Ruby中设置Cucumber.wants_to_quit = true。
这是我的示例代码:
@After
public void quitOnErrors(Scenario scenario) {
if (scenario.isFailed()) {
// Need the correct class/method/property to call here.
cucumber.api.junit.Cucumber.wants_to_quit = true;
}
}
答案 0 :(得分:1)
我找不到任何方法可以使用Cucumber-JVM本地执行此操作,但您可以随时执行此操作:
static boolean prevScenarioFailed = false;
@Before
public void setup() throws Exception {
if (prevScenarioFailed) {
throw new IllegalStateException("Previous scenario failed!");
}
// rest of your setup
}
@After
public void teardown(Scenario scenario) throws Exception {
prevScenarioFailed = scenario.isFailed();
// rest of your teardown
}
答案 1 :(得分:0)
使用
在第一次测试失败时,cuc-jvm退出的接受答案throw new IllegalStateException()
根据我的经验不起作用。
尝试使用黄瓜命令行开关-y
。
我没有找到-y
的任何硬文档,但建议here并且该对话中的开发人员致力于实现它。我已对它进行了测试,并且按预期工作。
我还没有找到Cucumber.wants_to_quit?
的cucumber-jvm版本,但这可能会涵盖您的用例。
答案 2 :(得分:0)
在场景定义失败后在步骤定义文件中创建黄瓜挂钩有助于停止测试。这涉及创建@Before
和@After
方法。看一下这个例子:
@Before
public void setUp() {
if (prevScenarioFailed) {
throw new IllegalStateException("Previous scenario failed!");
}
}
@After()
public void stopExecutionAfterFailure(Scenario scenario) {
prevScenarioFailed = scenario.isFailed();
}