https://github.com/cucumber/cucumber-java-skeleton
This is the simplest possible setup for Cucumber-JVM using Java.
https://github.com/cucumber/cucumber-java-skeleton
Last synced: 12 days ago
JSON representation
This is the simplest possible setup for Cucumber-JVM using Java.
- Host: GitHub
- URL: https://github.com/cucumber/cucumber-java-skeleton
- Owner: cucumber
- License: mit
- Created: 2014-03-12T10:06:15.000Z (about 11 years ago)
- Default Branch: main
- Last Pushed: 2025-04-05T05:02:38.000Z (20 days ago)
- Last Synced: 2025-04-09T22:23:42.180Z (15 days ago)
- Language: Java
- Size: 1.1 MB
- Stars: 478
- Watchers: 103
- Forks: 630
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Cucumber-Java Skeleton
This is the simplest possible setup for Cucumber using Java. There is nothing
fancy like a webapp or browser testing. All this does is to show you how to
set up and run Cucumber!There is a single feature file with one scenario. The scenario has three steps,
two of them pending. See if you can make them all pass!To write assertions the project comes with [AssertJ](https://assertj.github.io/doc/#assertj-core-assertions-guide)
included.## Get the code
Git:
git clone https://github.com/cucumber/cucumber-java-skeleton.git
cd cucumber-java-skeletonSubversion:
svn checkout https://github.com/cucumber/cucumber-java-skeleton/trunk cucumber-java-skeleton
cd cucumber-java-skeletonOr [download a zip](https://github.com/cucumber/cucumber-java-skeleton/archive/main.zip) file.
## Run the tests
### Use MavenOpen a command window and run:
cd maven
./mvnw testThis runs Cucumber features using Cucumber's JUnit Platform Engine. The `Suite`
annotation on the `RunCucumberTest` class tells JUnit to kick off Cucumber.### Use Gradle
Open a command window and run:
cd gradle
./gradlew test --rerun-tasks --infoThis runs Cucumber features using Cucumber's JUnit Platform Engine. The `Suite`
annotation on the `RunCucumberTest` class tells JUnit to kick off Cucumber.## Configuration
The [Cucumber JUnit Platform Engine](https://github.com/cucumber/cucumber-jvm/tree/main/cucumber-junit-platform-engine) uses configuration parameters to know what features to run,
where the glue code lives, what plugins to use, etc. When using JUnit, these
configuration parameters are provided through the `@ConfigurationParameter`
annotation on your test.For available parameters see: `io.cucumber.junit.platform.engine.Constants`
## Run a subset of Features or Scenarios
Specify a particular scenario by *line*
@SelectClasspathResource(value = "io/cucumber/skeleton/belly.feature", line = 3)
In case you have multiple feature files or scenarios to run against repeat the
annotation.You can also specify what to run by *tag*.
First add a tag to a scenario:
```feature
Feature: Belly@Zucchini
Scenario: a few cukes
```Then add an annotation to `RunCucumberTest`.
```java
@IncludeTags("Zucchini")
```When using Maven, tags can be selected from the CLI using the `groups` and `excludedGroups` parameters. These take a
[JUnit5 Tag Expression](https://junit.org/junit5/docs/current/user-guide/#running-tests-tag-expressions).
Note: When using JUnit, the `@` is not part of the tag.```
mvn verify -DexcludedGroups="Haricots" -Dgroups="Zucchini | Gherkin"
```### Running a single scenario or feature
Maven and Gradle do not (yet) support selecting single features or scenarios
with JUnit selectors. As a work around the `cucumber.features` property can be
used. Because this property will cause Cucumber to ignore any other selectors
from JUnit it is prudent to only execute the Cucumber engine.#### With Maven
To select the scenario on line 3 of the `belly.feature` file use:
```
./mvnw test -Dsurefire.includeJUnit5Engines=cucumber -Dcucumber.features=src/test/resources/io/cucumber/skeleton/belly.feature:3
```Note: Add `-Dcucumber.plugin=pretty` to get a more detailed output during test execution.
#### With Gradle
TODO: (I don't know how to do this. Feel free to send a pull request. ;))