Cucumber Tutorial
Cucumber Hooks
What Are Hooks In Cucumber ?
Hooks are the blocks of code that run before and after each scenario. It can be defined in step-definition. It enables us to manage the code workflow and also to reduce the code redundancy.
'@Before' and '@After' are the hooks in cucumber. We can add multiple hooks in step-definition and the default execution of hooks is in alphabetical order. Let's understand it with an example :
Step-definition :
package stepdefinitions; import io.cucumber.java.After; import io.cucumber.java.Before; import io.cucumber.java.en.Given; public class HooksExample { @Before public void beforeScenario() { System.out.println("\nThis will run before each scenario"); } @After public void afterScenario() { System.out.println("This will run after each scenario\n"); } @Given("^Run step of scenario 1$") public void run_Scenario_I() throws Throwable { System.out.println("Runnig step of Scenario 1"); } @Given("^Run step of scenario 2$") public void run_Scenario_II() throws Throwable { System.out.println("Runnig step of Scenario 2"); } }
Feature file :
Feature: Hooks Example
Scenario: Scenario 1 is included
Given Run step of scenario 1
Scenario: Scenario 2 is included
Given Run step of scenario 2
Test Runner Class :
package cucumberTest;
import org.junit.runner.RunWith;
import io.cucumber.junit.Cucumber;
@RunWith(Cucumber.class)
@io.cucumber.junit.CucumberOptions(
features = "Features/featureTag.feature"
,glue={"stepdefinitions"}
)
public class TestRunnerForHooks {
}
Output :
This will run before each scenario
Runnig step of Scenario 1
This will run after each scenario
This will run before each scenario
Runnig step of Scenario 2
This will run after each scenario