Search code examples
eclipsecucumber-junit

@Before cucumber hook does accept scenario as an argument


I'm trying to get the name of the current cucumber scenario.

I'm using JUnit 4.10. When I add the @Before without any arguments then the method is successfully called. However if I include the argument Scenario then I get:

cucumber.runtime.CucumberException: Can't invoke stepDefinitions.beforeScenarios(Scenario)

import cucumber.annotation.Before;
import gherkin.formatter.model.Scenario;

public class stepDefinitions {
    public Scenario scenario = null;

    @Before
    public void beforeScenarios(Scenario scenario) {
        System.out.println("Method called");
    }
    ...

Any ideas what I'm doing wrong?

I'm updated my pom.xml with:

<dependency> 
  <groupId>org.seleniumhq.selenium</groupId> 
  <artifactId>selenium-java</artifactId> 
  <version>3.141.5</version> 
</dependency>
<dependency> 
  <groupId>io.cucumber</groupId>
  <artifactId>cucumber-java</artifactId>
  <version>4.3.1</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>io.cucumber</groupId>
  <artifactId>cucumber-junit</artifactId>
  <version>4.3.1</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <scope>test</scope>
</dependency>

Solution

  • Below are right API to be imported.

    @Before - import cucumber.api.java.Before;

    Scenario - import cucumber.api.Scenario;