Question

I am writing tests using cucumber-jvm and I want the system to stop running tests on the first scenario that fails. I found example code written for Cucumber Ruby that does this via an After hook. I am searching for the correct java class and method to call that will be the equivalent of setting Cucumber.wants_to_quit = true in Ruby.

Here is my example code:

@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;   
    }
}    
Was it helpful?

Solution

I could not find any way to do it natively with Cucumber-JVM, but you can always do this:

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
}

OTHER TIPS

The accepted answer for cucumber-jvm quit on first test failure using

throw new IllegalStateException()

doesn't work in my experience.

Try the cucumber command line switch -y instead.

I didn't find any hard documentation for -y, but it was suggested here and a developer in that conversation committed to implementing it. I've tested it and it works as expected.

I have not found a cucumber-jvm version of Cucumber.wants_to_quit? but perhaps this will cover your use case.

Creating cucumber hooks in the step definition file helps to stop the test after a scenario fails. This involves creating @Before and @After methods. Take a look at this example:

@Before
  public void setUp() {
    if (prevScenarioFailed) {
      throw new IllegalStateException("Previous scenario failed!");
    }


  }

  @After()
  public void stopExecutionAfterFailure(Scenario scenario) {
    prevScenarioFailed = scenario.isFailed();
  }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top