Using Cucumber with JUnit
Configuring Cucumber JUnit
To get started with Cucumber, you need to add the required version of Cucumber JUnit to your project:
<dependencies>
[...]
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
[...]
</dependencies>
Then create an empty class that uses the Cucumber JUnit runner.
package org.sample.cucumber;
import org.junit.runner.RunWith;
import io.cucumber.junit.CucumberOptions;
import io.cucumber.junit.Cucumber;
@RunWith( Cucumber.class )
public class RunCucumberIT
{
[...]
}
This will execute all scenarios in the package of the runner. By default a glue code is assumed to be in the same package. The @CucumberOptions
annotation can be used to provide additional configuration of Cucumber.
Note that in this example the BDD scenarios are executed by the Failsafe Plugin in the integration-test
phase of the build lifecycle. The Failsafe Plugin can be invoked by calling the verify
phase.
mvn verify
Using JUnit Rules
The Cucumber supports JUnit annotations @ClassRule
, @BeforeClass
and @AfterClass
. These are invoked around the suite of features. Using these is not recommended as it limits the portability between different runners. Instead it is recommended to use Cucumbers `Before` and `After` hooks to setup scaffolding.
Using other JUnit features
The Cucumber runner acts like a suite of a JUnit tests. As such other JUnit features such as Categories, Custom JUnit Listeners and Reporters and re-running failed tests can all be expected to work.