Maven fail-safe ne pas exécuter des tests
J'ai Peigné StackOverflow et de nombreux autres sites, j'ai trouvé de nombreux autres articles connexes et j'ai suivi toutes ces suggestions, mais à la fin, failsafe saute mes tests.
Mon test JUnit se trouve ici:
myModule/src/main/test/java/ClientAccessIT.java
Je suis sauter infaillible, car il n'y a pas de tests unitaires dans ce module:
<!-- POM snippet -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
Et j'essaie d'exécuter des tests d'intégration avec failsafe :
<!-- POM snippet -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<id>run-tests</id>
<phase>integration-test</phase>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
Cependant, quand je cours mvn verify
je vois ceci:
[INFO] --- maven-failsafe-plugin:2.14.1:integration-test (run-tests) @ rest-services-test ---
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
J'ai passé le dernier 4 1/2 heures à récurer, toute aide serait appréciée. La seule autre chose qui peut être utile de mentionner est que j'ai Cargo mettre en place et déchirer un conteneur Tomcat. Est-ce que quelqu'un voit le problème flagrant?
D
7 réponses
, Vous devez renommer votre classe de test.
Vous pouvez trouver les noms que le plugin recherche par défaut dans la documentation , comme indiqué par @acdcjunior:
Par défaut, le Plugin Failsafe inclura automatiquement toutes les classes de test avec les modèles génériques suivants:
- "
**/IT*.java
" - inclut tous ses sous-répertoires et tous les noms de fichiers java qui commencent par "IT".- "
**/*IT.java
" - inclut tous ses sous-répertoires et tous les noms de fichiers qui se terminent par "IL".- "
**/*ITCase.java
" - inclut tous ses sous-répertoires et tous les noms de fichiers java qui se terminent par "ITCase".
J'ai eu un problème similaire. S'il n'y a pas de classes de test compilées pour target/test-classes, vérifiez votre fichier pom et assurez-vous que l'emballage n'est pas "pom".
Pour les projets multi-modules, le projet enfant doit avoir le plugin déclaré comme suit,
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
</plugin>
La Version hérite du parent pom. Sans ce qui précède défini, le plugin dans le parent pom seul ne fonctionnera pas.
Vos tests ne sont pas dans le répertoire de sources de test par défaut src / test / java. Voir:
Https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
MyModule/src/main/test/java / ClientAccessIT.java
Devrait être:
MyModule/src/test/java / ClientAccessIT.java
Vous pouvez également mettre à jour votre fichier pom (si vous voulez vraiment que les tests vivent dans main) pour inclure:
<build>
<testSources>
<testSource>
<directory>src/main/test</directory>
</testSource>
</testSources>
</build>
J'ai aussi eu un problème similaire mais j'avais besoin que l'élément d'emballage soit "pom". Assurez-vous que vos fichiers source de test sont compilés et ajoutés à la ...dossier / target / test-classes utilisant le plugin Maven-compiler:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<executions>
<execution>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
J'ai eu le même problème et essayé quelques solutions proposées ici. Je développe une application de démarrage Spring en utilisant JUnit 5. Malheureusement, aucun de mes tests d'intégration (situé dans src/test/java
et suffixé avec *TestIT.java
) n'a été récupéré, quelle que soit la publicité du plugin pour le faire. J'ai essayé de rétrograder à 2.18.1, 2.19.1 et essayé à la fois de supprimer les sections <executions>
et <configuration>
pour tenter d'utiliser même la fonctionnalité par défaut du plugin, mais non chance.
J'ai finalement changé la version à la dernière (au moment de la rédaction) à 2.22.0, et viola. Voici la configuration que j'ai ajoutée à la section <build><plugins>
de mon pom. Et encore mieux, je n'ai pas besoin d'ajouter des exécutions qui définissent les objectifs integration-test
et verify
que la plupart des gens incluent; failsafe les exécute par défaut. J'ai également inclus ma configuration de plugin surefire, car je l'utilise pour exécuter des tests unitaires pendant la phase test
du maven cycle de vie.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version><!--$NO-MVN-MAN-VER$-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.0</version><!--$NO-MVN-MAN-VER$ -->
</plugin>
Et juste pour faire bonne mesure, pour dire à surefire et failsafe d'utiliser JUnit 5, j'inclus ceci dans ma section <dependencies>
:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
Eclipse affiche un avertissement (soulignement jaune) sous la balise version, d'où l'inclusion de l'erreur <!--$NO-MVN-MAN-VER$ -->
. Je suis sûr qu'il y a une meilleure façon de faire face à cela, mais cela fonctionne pour moi dans ce cas.
Pour accélérer le test de cette configuration, et pour éviter d'avoir à passer par tous les de la précédente phases du cycle de vie avant test
, integration-test
ouverify
phases, j'ai utilisé les commandes suivantes pour valider rapidement:
-
mvn failsafe:integration-test
(exécute uniquement les tests d'intégration) -
mvn surefire:test
(exécute uniquement des tests unitaires) - (j'exécute évidemment tout le cycle de vie quand il compte)
J'espère que cela aide quelqu'un. À votre santé!
J'ai eu un problème quelque peu similaire. Mes tests D'intégration n'ont pas été repris. Mon projet est un projet de démarrage à ressort multi-modules. Et mon erreur était que j'ai ajouté Maven-failsafe-plugin dans le POM parent. Après avoir manipulé de nombreuses options, j'ai placé le plugin failsafe dans le module pom où tous mes tests d'intégration étaient présents, ce qui a résolu mon problème.