Cucumber
​
Introduction To Cucumber & Basics
​
​
First Selenium Test And Mapping In Cucumber
​
​
​
​
​
​
​
​
​
Tagged Hooks In Cucumber
​
​
What Are Tagged Hooks In Cucumber ?
​
Cucumber provides hooks that run before and after each scenario that means this is prerequisites for all scenario but what if we have different prerequisites for different scenarios ? For the purpose of its solution cucumber has provided a feature of tagged hooks.
All the tagged hooks are executed before the default hooks.
We can add multiple tags with a single hook.
​
For implementing tagged hooks all we need is :
-
Add tag with hook in step-definition : @Before("@RunTag")
-
Add tag on scenario in feature file :​
@RunTag
Scenario: Scenario 1 is included
Given Run step of scenario 1
Let's demonstrate 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 TaggedHooksExample {
@Before
public void beforeScenario() {
System.out.println("\nThis will run before each scenario");
}
@Before("@RunTag")
public void beforeTaggedScenario() {
System.out.println("This will run before each tagged scenario");
}
@After("@ExecuteTag")
public void afterTaggedScenario() {
System.out.println("This will run after each tagged 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");
}
@Given("^Run step of scenario 3$")
public void run_Scenario_III() throws Throwable {
System.out.println("Runnig step of Scenario 3");
}
@Given("^Run step of scenario 4$")
public void run_Scenario_IV() throws Throwable {
System.out.println("Runnig step of Scenario 4");
}
}
​
​
-
Feature File :
Feature: Tagged Hooks Example
​
@RunTag
Scenario: Scenario 1 is included
Given Run step of scenario 1
@ExecuteTag
Scenario: Scenario 2 is included
Given Run step of scenario 2
@ExecuteTag
Scenario: Scenario 3 is included
Given Run step of scenario 3
@RunTag
Scenario: Scenario 4 is included
Given Run step of scenario 4
​
​
-
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 TestRunnerForTaggedHooks {
}
​
Output :
​
This will run before each scenario
This will run before each tagged 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 tagged scenario
This will run after each scenario
This will run before each scenario
Runnig step of Scenario 3
This will run after each tagged scenario
This will run after each scenario
This will run before each scenario
This will run before each tagged scenario
Runnig step of Scenario 4
This will run after each scenario
​
​
​
​
​
Refer next page Execution Order Of Hooks
​
​