Using the Spock based on JUnit5 engine
Sample project with Spock/Groovy and JUnit5
This sample code shows you how the Failsafe plugin works with Spock/Groovy and JUnit5. The project contains two dependencies spock-core
and junit-jupiter-engine
, and Groovy compiler gmavenplus-plugin
.
You can create tests in test source directory for Groovy (i.e., src/test/groovy
). This is an example with parameterized test which is executed twice.
import pkg.Calculator import spock.lang.Specification class CalculatorTest extends Specification { def "Multiply: #a * #b = #expectedResult"() { given: "Calculator" def calc = new Calculator() when: "multiply" def result = calc.multiply( a, b ) then: "result is as expected" result == expectedResult println "result = ${result}" where: a | b | expectedResult 1 | 2 | 3 -5 | 2 | -3 } }
If you want to additionally mix Spock tests with the JUnit4, you should add the JUnit Vintage Engine in the test dependencies.
<dependencies> [...] <dependency> <groupId>org.spockframework</groupId> <artifactId>spock-core</artifactId> <version>2.0-M2-groovy-3.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.9.1</version> <scope>test</scope> </dependency> [...] </dependencies> ... <build> <plugins> [...] <plugin> <groupId>org.codehaus.gmavenplus</groupId> <artifactId>gmavenplus-plugin</artifactId> <version>1.9.0</version> <executions> <execution> <goals> <goal>compileTests</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>3.5.2</version> <executions> <execution> <id>integration-test</id> <goals> <goal>integration-test</goal> </goals> </execution> <execution> <id>verify</id> <goals> <goal>verify</goal> </goals> </execution> </executions> </plugin> [...] </plugins> </build> ...