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

22
demandé sur Danny Bullis 2013-05-05 22:26:22

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".
17
répondu Keppil 2013-05-05 20:26:56

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".

10
répondu Raymond 2015-07-31 21:11:49

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.

9
répondu barryku 2016-08-01 19:49:13

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>
7
répondu pro-tester 2017-05-09 17:02:03

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>
6
répondu conapart3 2016-02-17 12:31:10

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é!

1
répondu Danny Bullis 2018-10-01 18:16:14

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.

0
répondu horizon7 2018-09-19 08:01:45