Pourquoi ne pas “mvn vérifier” exécuter mes tests d'intégration?
J'ai un multi-projet de module et j'ai failsafe défini dans la racine pom comme ceci:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19</version>
<configuration>
<includes>
<include>**/*IntegrationTest.java</include>
<include>**/*JourneyTest.java</include>
<include>**/*CucumberFeatureTest.java</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<excludes>
<exclude>**/*IntegrationTest.java</exclude>
<exclude>**/*JourneyTest.java</exclude>
<exclude>**/*CucumberFeatureTest.java</exclude>
</excludes>
</configuration>
</plugin>
Failsafe n'est pas définie n'importe où ailleurs dans mes autres pdm. Si je lance mvn verify
, il passe les tests d'intégration (il exécute les tests unitaires). Mais si je lance mvn test-compile failsafe:integration-test
, il exécute des tests d'intégration.
Je suis sous l'hypothèse que le failsafe est censé fonctionner dans ces deux situations. Alors pourquoi ne pas s'exécuter lorsque je tape mvn verify
?
Mise à JOUR: Juste remarqué que c'était enroulée autour de ces tags:
<build>
<pluginManagement> <!-- oops -->
<plugins>
<plugin>
Je sens que c'est ce qui explique la cause, mais je ne suis pas sûr pourquoi unité tests de toujours courir comme vous vous attendez à mvn verify
et mvn test
. Pourquoi ne infaillible de travail différemment de failsafe à cet égard?
- Je crois Surefire est incluse dans la norme POM mais Failsafe ne l'est pas.
Vous devez vous connecter pour publier un commentaire.
Vous devez lier failsafe d'intégration de l'objectif de test à maven de
integration-test
etverify
phases. Par défaut, le failsafe plugin n'est pas inclus dans unvanilla
projet maven. Vous devez l'ajouter. Donc même si il est unintegration-test
du cycle de vie, par défaut, il n'est pas inclus (à tout le moins ne pas courir lemaven-failsafe-plugin
). Vous l'ajouter à laintegration-test
etverify
phases (il a besoin à la fois, il ne sera pas le construire à l'verify
phase [si le précédent de l'intégration-tests échouent], de sorte que lepost-integration
phase du cycle de vie a encore une chance de s'exécuter et de nettoyage de ressources, d'où le nom de "fail safe").J'ai rencontré un problème similaire lors de l'exécution de mvn vérifier que les tests d'intégration n'ont pas été exécutés, mais seulement les tests unitaires.
Il a travaillé après le marquage skipTests à faux: