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.