This work is based on dkowis/cucumber-jvm-groovy-example
There exists a number of issues which prevent seamless integration of Cucumber-JVM and Gradle.
One possible solution is to use Cucumber's Main
class to run your tests. You can do this by using javaexec
task in Gradle.
In order to run your Cucumber tests execute:
gradle cucumber
Groovy example by David Kowis runs perfectly, but it uses Groovy step definitions.
If you're writing your step definitions in Java then Gradle script needs to be changed slightly.
Here are some caveats:
cucumber
task has to depend oncompileTestJava
task in order to compile test sources
task cucumber() {
dependsOn assemble, compileTestJava
...
}
javaexec
classpath should includemain
andtest
output directories. Otherwise Cucumber-JVM will not find your production classes/resources and step definitions respectively.
classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
- Cucumber's
--glue
should be set to your package name (e.g.gradle.cucumber
) and NOT tosrc/test/java
args = ['-f', 'pretty', '--glue', 'gradle.cucumber', 'src/test/resources']