web-dev-qa-db-fra.com

Maven fail-safe n'effectuant pas de tests

J'ai consulté StackOverflow et de nombreux autres sites, trouvé de nombreux autres articles et suivi toutes les suggestions suggérées, mais à la fin, failafe omet mes tests.

Mon test JUnit se trouve ici: myModule/src/main/test/Java/ClientAccessIT.Java

Je suis sauter le surefire 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 failafe :

<!-- 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 lance 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é les 4 dernières heures et demie à récurer, toute aide serait la bienvenue. La seule autre chose qui mérite d'être mentionnée est que j'ai Cargo installé et démonte un conteneur Tomcat. Est-ce que quelqu'un voit le problème criant?

27
danny-v

Vous devez renommer votre classe de test. 

Vous pouvez trouver les noms que le plugin cherche par défaut dans la documentation , comme indiqué par @acdcjunior: 

Par défaut, le plug-in Failsafe inclura automatiquement toutes les classes de test avec les modèles de caractère générique suivants: 

  • "**/IT*.Java" - inclut tous ses sous-répertoires et tous les noms de fichiers Java commençant par "IT".
  • "**/*IT.Java" - inclut tous ses sous-répertoires et tous les noms de fichiers Java se terminant par "IT".
  • "**/*ITCase.Java" - inclut tous ses sous-répertoires et tous les noms de fichiers Java se terminant par "ITCase".
19
Keppil

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 de pom parent. Sans la définition ci-dessus, le plug-in dans pom parent seul ne fonctionnera pas.

11
barryku

J'avais un problème similaire. S'il n'y a pas de classes de test compilées dans target/test-classes, vérifiez votre fichier pom et assurez-vous que son emballage n'est pas «pom».

11
Raymond

Vos tests ne se trouvent pas dans le répertoire des 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>
10
pro-tester

J'ai également 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 au dossier .../target/test-classes à l'aide du 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>
6
conapart3

J'avais le même problème et j'ai essayé quelques-unes des options suggérées ici. Je développe une application Spring Boot utilisant JUnit 5. Malheureusement, aucun de mes tests d'intégration (situés dans src/test/Java et suffixé de *TestIT.Java) n'a été repris, quel que soit le publicité du plugin pour le faire. J'ai essayé de passer à 2.18.1, 2.19.1 et essayé de supprimer les sections <executions> et <configuration> pour essayer d'utiliser les fonctionnalités par défaut du plugin, mais sans succès.

J'ai finalement changé la version la plus récente (au moment de l'écriture) en 2.22.0 et alto. 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 d'exécutions qui définissent les objectifs integration-test et verify que la plupart des gens incluent; La sécurité intégrée les exécute par défaut. J'ai également inclus la configuration de mon plugin infaillible, car je l'utilise pour exécuter des tests unitaires au cours de la phase test du cycle de vie de maven.

<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 que nous sommes sur et en sécurité utiliser JUnit 5 , je l’ajoute à ma section <dependencies>:

<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-engine</artifactId>
  <scope>test</scope>
</dependency>

Eclipse affiche un avertissement (soulignement ondulé jaune) sous la balise de version, d'où l'inclusion de l'erreur <!--$NO-MVN-MAN-VER$ -->. Je suis sûr qu'il existe un meilleur moyen de régler ce problème, mais cela fonctionne pour moi dans ce cas.

Pour accélérer le test de cette configuration et éviter de passer par all des phases précédentes du cycle de vie avant les phases test, integration-test ouverify, 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 les tests unitaires)
  • (Je gère évidemment tout le cycle de vie quand ça compte)

J'espère que ça aide quelqu'un. À votre santé!

1
Danny Bullis

J'ai eu un problème un peu similaire. Mes tests d'intégration n'étaient pas repris. Mon projet est un projet de démarrage de printemps multi-module. Et mon erreur est que j'ai ajouté maven-failafe-plugin dans le POM parent. Après avoir bricolé avec de nombreuses options, j'ai placé le plug-in fail-safe dans le pom du module où tous mes tests d'intégration étaient présents, ce qui a résolu mon problème.

0
horizon7