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.3</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>
...