――Je souhaite ajouter Spock tout en conservant le JUnit existant.
--Je veux exécuter JUnit et Spock avec une seule commande (
./mvnw test```)
--Je ne dis pas à quel point Spock est génial
C'est une histoire. Dédié à ceux qui testent encore avec JUnit à Maven ...
Ajoutez une dépendance à pom.xml
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>1.3-groovy-2.5</version>
<scope>test</scope>
</dependency>
Rédigez un test
package jp.co.trech
import spock.lang.*
class AppSpec extends Specification {
def 'Échantillon test'() {
expect:
Math.max(1, 2) != 2 //Je veux vérifier si le test est en cours, j'ose donc en faire un test qui échoue
}
}
Essayez d'exécuter un test
./mvnw test
→ BUILD SUCCESS
→ Aucun fichier compilé n'est généré et Spock n'est pas en cours d'exécution
Voir maven-compiler-plugin uniquement pour la version 3.6.2 ou supérieure (voir Groovy Eclipse Maven plugin). )
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerId>groovy-eclipse-compiler</compilerId>
<verbose>true</verbose>
<compilerArguments>
<indy/><!-- optional; supported by batch 2.4.12-04+ -->
<configScript>config.groovy</configScript><!-- optional; supported by batch 2.4.13-02+ -->
<!-- consult Lombok docs to confirm agent class name for your version -->
<javaAgentClass>lombok.launch.Agent</javaAgentClass>
</compilerArguments>
<fork>true</fork>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>3.3.0-01</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-batch</artifactId>
<version>2.5.6-01</version>
</dependency>
<dependency><!-- optional;Ajouter si vous utilisez lombok dans votre projet-->
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
Essayez d'exécuter un test
./mvnw test
→ BUILD SUCCESS
→ Un fichier compilé a été généré! → Mais Spock ne court pas
Ajoutez ce qui suit après le maven-compiler-plugin ci-dessus
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<failIfNoTests>true</failIfNoTests>
<includes>
<include>**/*Test.*</include>
<include>**/*Spec.*</include>
</includes>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>3.0.0-M1</version>
</dependency>
</dependencies>
</plugin>
La version de maven-surefire-plugin dépend de la version de java, donc référez-vous à Maven Surefire Plugin.
Essayez d'exécuter un test
./mvnw test
→ BUILD FAILURE
→ Un fichier compilé a été généré! → Spock a également été exécuté, donc le test a échoué!
→ Modifiez le test Spock et si le test réussit, vous avez terminé!
--Spock a été facilement mis en gradle, mais il est difficile d'ajouter Spock à maven
Compiling Groovy maven-surefire-plugin Using JUnit groovy/groovy-eclipse Groovy Eclipse Maven plugin