What are Hooks in Cucumber?
Hooks in Cucumber are blocks of code that run before or after each scenario or step in your test suite. They are used to setup and teardown test environments. Hooks are written in the Step Definition file using annotations like:
@Before@After@BeforeStep@AfterStep
These come from io.cucumber.java, and are similar to setup and teardown methods in testing frameworks like JUnit or TestNG.
Why Use Hooks?
Hooks are useful for:
Launching a browser before each test
Logging into a system
Setting up test data
Cleaning up after test execution
Capturing screenshots on failure
Types of Hooks
| Hook | Description |
|---|---|
| @Before | Runs before each scenario |
| @After | Runs after each scenario |
| @BeforeStep | Runs before each step (rarely used) |
| @AfterStep | Runs after each step (example: take screenshot) |
Hook Execution Order
You can control the order using the order parameter:
@Before(order = 1)
public void setupDB() {}
@Before(order = 2)
public void setupBrowser() {}
Lower
order values run first.Example: Cucumber Hooks in Java
1. Feature File:
Feature: Login Feature
Scenario: Successful login
Given user is on login page
When user enters valid credentials
Then user is redirected to home page
2. Step Definition File (
LoginSteps.java):package stepdefinitions;
import io.cucumber.java.en.*;
public class LoginSteps {
@Given("user is on login page")
public void user_is_on_login_page() {
System.out.println("User is on login page");
}
@When("user enters valid credentials")
public void user_enters_valid_credentials() {
System.out.println("User enters valid credentials");
}
@Then("user is redirected to home page")
public void user_is_redirected_to_home_page() {
System.out.println("User is redirected to home page");
}
}
3. Hook File (
Hooks.java):package stepdefinitions;
import io.cucumber.java.Before;
import io.cucumber.java.After;
public class Hooks {
@Before
public void beforeScenario() {
System.out.println("==== Launching browser before scenario ====");
}
@After
public void afterScenario() {
System.out.println("==== Closing browser after scenario ====");
}
}
Output:
==== Launching browser before scenario ====
User is on login page
User enters valid credentials
User is redirected to home page
==== Closing browser after scenario ====
No comments:
Post a Comment