Comment utiliser le plug-in Maven Surefire avec différents groupes pour le test et le test d'intégration?
-
03-07-2019 - |
Question
Je souhaite utiliser testng avec plug-in Surefire sur Maven . L'idée est de baliser certains tests avec un groupe integrationTest
et d'exécuter le plug-in à deux reprises: pour l'objectif test
en excluant le groupe integration-test
et pour l'objectif pom.xml
en incluant le groupe mvn integration-test
uniquement.
J'ai trouvé des informations pour l'exécution du plug-in pour les deux objectifs et cela fonctionne, mais le groupe pour la deuxième exécution ne fonctionne pas (aucun test n'est exécuté).
Voici la configuration du plug-in dans l'élément de construction de mon mvn test
:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludedGroups>integrationTest</excludedGroups>
<reportFormat>brief</reportFormat>
<trimStackTrace>true</trimStackTrace>
<useFile>false</useFile>
</configuration>
<executions>
<execution>
<id>integration-test</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<groups>integrationTest</groups>
<excludedGroups/>
<reportsDirectory>${project.build.directory}/surefire-reports/integration</reportsDirectory>
</configuration>
</execution>
</executions>
</plugin>
Une idée? <=> exécute tous les tests unitaires comme prévu (à l'exception du groupe <=>), mais le second test écrit simplement:
Exécution de TestSuite
Tests effectués: 0, Échecs: 0, Erreurs: 0, Ignoré: 0, Temps écoulé: 0.562 seconde
Le résultat de <=> est celui attendu, les tests sont exécutés et le groupe <=> est ignoré.
La solution
Je l'ai eu - implémentation de configuration irritante!
<excludedGroups/>
ne remplace pas <excludedGroups>integrationTest</excludedGroups>
. Vous devez spécifier un groupe (inconnu) à la place, <excludedGroups>none</excludedGroups>
par exemple.
Autres conseils
Le plug-in Failsafe est le meilleur moyen de le faire. (il n’était peut-être pas disponible lorsque vous avez posté cette question). Il ajoute une phase de test d'intégration au cycle de vie de la construction. Il vous permet de faire exécuter des activités de configuration et de démontage avant et après les tests, ce qui est utile pour gérer un conteneur incorporé, par exemple.