J'ai écrit une méthode de test simple avec JUnit 5:
public class SimlpeTest {
@Test
@DisplayName("Some description")
void methodName() {
// Testing logic for subject under test
}
}
Mais quand je cours mvn test
, j'ai:
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running SimlpeTest
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
D'une manière ou d'une autre, infaillible n'a pas reconnu cette classe de test. Mon pom.xml
ressemble à:
<properties>
<java.version>1.8</java.version>
<junit.version>5.0.0-SNAPSHOT</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit5-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>snapshots-repo</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<updatePolicy>always</updatePolicy>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
Une idée de comment faire fonctionner cela?
Réponses:
Le
maven-surefire-plugin
, à ce jour, ne prend pas entièrement en charge JUnit 5 . L'ajout de cette prise en charge dans SUREFIRE-1206 pose problème .En tant que tel, vous devez utiliser un fournisseur personnalisé . L'un a déjà été développé par l'équipe JUnit; à partir du guide de l' utilisateur , vous devez ajouter le
junit-platform-surefire-provider
fournisseur et l'TestEngine
implémentation de la nouvelle API:Assurez-vous également de déclarer la
junit-jupiter-api
dépendance avec une portée detest
:la source
maven-surefire-plugin v2.21.0
fonctionne bien avecjunit-jupiter-engine v5.2.0
etjunit-platform-surefire-provider v1.2.0
Mise à jour 2
Le problème a été résolu dans Maven Surefire Plugin v2.22.0
Une nouvelle version est disponible sur le référentiel central Maven.
Maven
Gradle
Mettre à jour
Comme Marian l'a souligné, la dernière version de JUnit 5 Platform Surefire Provider (1.2.0) prend en charge la dernière version de Maven Surefire Plugin (2.21.0) :
Exemple
pom.xml
TestScenario.java
Sortie (installation propre mvn)
Le moyen le plus simple jusqu'à aujourd'hui:
la source
À partir de la documentation JUnit 5 :
De plus, vous pouvez lire dans la
maven-surefire-plugin
documentation :Cela suffit donc pour exécuter les tests JUnit 5:
Sur mon espace GitHub, j'ai ajouté un exemple de projet maven fonctionnel que vous pouvez parcourir / cloner.
URL: https://github.com/ebundy/junit5-minimal-maven-project
la source
J'ai rencontré ce problème avec JUnit5 et Maven, mais j'ai également remarqué que, même si seul junit-jupiter-engine était ajouté en tant que dépendance, les tests s'exécuteraient sur certains projets, pas sur d'autres . Et je vois un peu le même schéma dans les commentaires ici: Dans le commentaire @Alex ci-dessus, vous pouvez voir qu'il n'a aucun problème, même avec les versions antérieures de surefire / junit / platform.
Après m'être gratté la tête pendant un certain temps, j'ai réalisé que les projets où les tests ne seraient pas exécutés étaient ceux où les noms des méthodes de tests ne contenaient pas le mot «test». Bien que cela ne soit pas mandaté par http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html
En d'autres termes: juste avec
ce
ne sera PAS exécuté, alors que
SERA exécuté!
Ce numéro se déroule comme une poupée russe ...
Quoi qu'il en soit, +1 pour @Mikhail Kholodkov dont la réponse mise à jour résout tous les problèmes à la fois!
la source
J'ai rencontré le même problème en août 2019 que j'ai posé ici: Maven échoue silencieusement à trouver les tests JUnit à exécuter . Ces réponses m'ont conduit dans la bonne direction, mais j'ai trouvé que vous pouviez résoudre le problème de manière encore plus concise. J'ai copié ma solution à partir de l' exemple de projet Maven JUnit5 .
À partir de JUnit 5.5.1 et
maven-surefire-plugin
2.22.2, vous n'avez pas besoin d'ajouter lajunit-platform-surefire-provider
dépendance. Il suffit d'avoir cette dépendance et un plugin spécifiés dans votrepom.xml
:la source
Juste pour compléter, surefire 2.22.0 + junit 5.2.0 + plate-forme 1.2.0 fonctionne également. Ci-joint un pom de travail pour votre référence:
la source
junit-vintage-engine
de dépendance, et tous mes tests ont été écrits pour JUnit 4.Dans mon cas, c'était à cause du TestNG dans le classpath ( SUREFIRE-1527 ). Groovy 2.5.5 POM l'a apporté avec le
groovy-testng
module.Le fournisseur de cadre de test spécifié manuellement (tel qu'il est décrit sur https://maven.apache.org/surefire/maven-surefire-plugin/examples/providers.html ) a résolu le problème:
la source
<dependency>
dans<dependencies>
dans votre exemple de code.Il y a un problème ouvert pour surefire 2.20
Cela fonctionne pour moi avec surfire 2.19 + junit-platform- * 1.0.3
la source
J'ai eu un problème similaire qui a également amené Surefire à reconnaître zéro test.
Mon problème s'est avéré être lié à ce qui suit (à partir de la documentation JUnit 5.1.0 / maven ):
J'essayais d'utiliser les dernières versions de Surefire (2.21.0) et junit-platform-surefire-provider (1.1.0), et cela ne fonctionnait pas (ni en Java 8 ni en 9)
Revenir à Surefire 2.19.1 a résolu mon problème.
Selon ce problème, un correctif sera inclus dans la version 1.2.0 du fournisseur junit-platform-surefire-provider (actuellement disponible en tant qu'INSTANTANÉ uniquement).
la source
Une chose que j'ai remarquée que j'ai pu le faire fonctionner:
ClinicCalendarShould
n'est pas repris par mavenClinicCalendarTest
est pris en charge par mavenDonc, à moins que je ne manque une sorte de configuration ou de paramètre ou quoi que ce soit dans le plugin infaillible, par défaut, vous devez nommer vos classes de test XXXTest.
la source
Mise à jour vers
maven-surefire-plugin:2.20
exécuter les tests Junit5 sans problème.Mais j'utilise la
M6
version sur Junit5.la source
Dans mon cas, le plugin infaillible n'a pas obtenu la version correcte du moteur jupiter / api. Et c'était même si vous exécutiez Maven 3.6.1 et surefireplugin Version 2.22.2!
Maintenant, ma configuration du plugin surefire ressemble à:
De plus, j'ai dû forcer ces versions:
On dirait que 5.5.2 était lié à la mauvaise version de plate-forme 1.3.2 au lieu de 1.5.2 dans mon cas.
Tous les tests JUnit5 sont récupérés maintenant. Même avec la version 2.22.0 du plugin infaillible, ce n'était pas le cas pour moi!
J'espère que cela pourra aider...
la source
J'étais confronté au même problème
junit5
et lesmaven-surefire
tests échouaient. Cependantjunit4
fonctionnait bien. La combinaison ci-dessous a fonctionné pour moi, je n'ajoute pas la gestion des versions. À utiliserjunit-bom
pour la gestion des dépendances. En utilisantspring-boot
2.1.4
Assurez-vous de passer à la dernière version d'Eclipse
la source