Le plugin Maven Failsafe ne trouvera pas mes tests d'intégration JUnit 5 lorsque j'exécute la commande mvn clean failsafe:integration-test
, bien qu'il puisse trouver les fichiers.
J'ai le junit-jupiter-api
et junit-jupiter-engine
comme dépendances de test:
<properties>
<junit.jupiter.version>5.0.1</junit.jupiter.version>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
Mes tests d'intégration sont nommés correctement (en suivant le **/*IT.Java
, **/IT*.Java
, ou la **/*ITCase.Java
celui inclus par défaut par Failsafe et exclu par défaut par Surefire).
Existe-t-il un moyen d'utiliser les tests JUnit 5 avec Failsafe?
Notez que depuis la documentation JUnit 5 : junit-platform-surefire-provider
ne doit plus être utilisé:
En raison de la sortie de Surefire
2.22.0
, lesjunit-platform-surefire-provider
de l'équipe JUnit est obsolète et sera abandonné dans une version ultérieure de la plate-forme JUnit.
De plus, vous pouvez également lire le maven-surefire-plugin
documentation :
Utilisation de la plate-forme JUnit 5
Pour démarrer avec JUnit Platform, vous devez ajouter au moins une seule implémentation
TestEngine
à votre projet. Par exemple, si vous souhaitez écrire des tests avec Jupiter, ajoutez l'artefact de testjunit-jupiter-engine
aux dépendances dans POM
Vous devez donc spécifier cette dépendance test
:
<properties>
<junit-jupiter.version>5.2.0</junit-jupiter.version>
</properties>
<dependencies>
[...]
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit-jupiter.version}</version>
<scope>test</scope>
</dependency>
[...]
</dependencies>
Et le maven-failsafe-plugin
la déclaration pourrait être aussi simple que:
<build>
<plugins>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.0</version>
</plugin>
</plugins>
</build>
Modifier: Cette réponse était correcte avant maven-failsafe-plugin:2.22.0
. Voir davidxxx's answer pour la solution idéale et la plus récente.
Le maven-failsafe-plugin
actuellement ne prend pas en charge JUnit 5 , prêt à l'emploi.
Cependant, comme avec maven-surefire-plugin
, vous pouvez exécuter des tests JUnit 5 avec le maven-failsafe-plugin
en spécifiant la dépendance sur le org.junit.platform:junit-platform-surefire-provider:1.0.1
avec la version antérieure du maven-failsafe-plugin:2.19.1
.
Cela ne fonctionne pas avec la version actuelle 2.20 de la sécurité intégrée (de la même manière que le surefire a l'erreur) en raison d'une OutOfMemory
error .
Voir ci-dessous pour un exemple de configuration du plugin:
<properties>
<junit.platform.version>1.0.1</junit.platform.version>
</properties>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>${junit.platform.version}</version>
</dependency>
</dependencies>
</plugin>
Vous pouvez trouver n exemple complet de ce fonctionnement (et un échec) sur GitHub . Pour tester son fonctionnement, vous pouvez exécuter mvn clean failsafe:integration-test
.