黄瓜-jvm相当于Cucumber.wants_to_quit是什么?

时间:2013-03-07 13:31:27

标签: cucumber-jvm

我正在使用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;   
    }
}    

3 个答案:

答案 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();
  }