Search code examples
javacucumbercucumber-jvmjbehave

Cucumber-jvm Hooks when Scenario is passed or failed


In Jbehave we can execute method upon outcome of scenario success/failure. One of the below mentioned methods will execute after failure and success.

@AfterScenario(uponOutcome=AfterScenario.Outcome.SUCCESS)
public void afterSuccessfulScenario() {
// Some code to execute...
}

@AfterScenario(uponOutcome=AfterScenario.Outcome.FAILURE)
public void afterFailedScenario() {
// Some code to execute...
}

I'm trying to achieve the same thing in Cucumber-jvm. The scenario Hooks @Before and @After will execute after each scenario. But I want to execute some code for each failure scenario.

I am not sure how to implement it in cucumber-jvm. Any clue?


Solution

  • You can achieve it using cucumber-jvm hooks. If a hook receive a Scenario as a parameter, you can know if it has failed or not.

    Example:

    @After
    public void afterScenario(Scenario scenario) {
      if (scenario.isFailed()) {
         // Some code to execute...
      }
      if(scenario.isPassed()) {
         // Some code to execute...
      }
    }
    

    Note the import of @After:

    import cucumber.api.java.After;
    

    Hope it helps.