Faire exécuter tous les tests par Maven, même lorsque certains échouent


243

J'ai un projet avec plusieurs modules. Lorsque tous les tests réussissent, le test Maven les exécute tous.

Lorsque les tests échouent dans le premier module, maven ne passera pas au projet suivant. J'ai testFailureIgnore défini sur true dans les paramètres Surefire, mais cela n'aide pas.

Comment puis-je faire exécuter tous les tests par maven?


Quelle version du plugin maven-surefire?
Pascal Thivent

Réponses:


359

Dans la documentation de Maven Embedder :

-fae, --fail-at-end Échouez seulement la construction après; permettre à toutes les versions non impactées de continuer

-fn, --fail-never NE JAMAIS échouer la construction, quel que soit le résultat du projet

Donc, si vous testez un module, vous pouvez l'utiliser en toute sécurité -fae.

Sinon, si vous avez plusieurs modules et si vous voulez tous les tester (même ceux qui dépendent du module de tests défaillant), vous devez exécuter mvn clean install -fn.
-faecontinuera avec le module dont le test a échoué (exécutera tous les autres tests), mais tous les modules qui en dépendent seront ignorés.


1
en outre, vous pouvez ajouter -e pour que la cmd fournisse des informations d'erreur.
despote

11
Je viens de tester l'option --fail-never. Maven n'échouera pas la construction même s'il y a des erreurs de compilation. Si j'utilise cette option sur Jenkins, la construction semble réussie même si elle contient beaucoup d'erreurs de compilation. Je préfère -Dmaven.test.failure.ignore=truedans ce cas et laisse Jenkins analyser les rapports infaillibles.
fuemf5

@wlnirvana J'ai édité le post maintenant avec ce lien (alors n'hésitez pas à supprimer votre commentaire ...)
Steve Chambers

93

Je viens de trouver le paramètre "-fae", qui fait que Maven exécute tous les tests et ne s'arrête pas en cas d'échec.


3
Malheureusement, ce paramètre ne fonctionne pas lorsque je le passe à TeamCity.
ripper234

4
Dans un projet multi-modules, les modules qui dépendent d'un module dont les tests ont échoué seront ignorés. Utilisez plutôt -fn.
hipokito

2
@ ripper234 avez-vous trouvé un moyen de le faire fonctionner sur TeamCity?
Jeredriq Demas

86

Pouvez-vous tester avec surefire 2.6 et configurer surefire avec testFailureIgnore=true. Ou sur la ligne de commande:

mvn install -Dmaven.test.failure.ignore=true

16
IIRC cela a pour effet que la construction entière n'échoue pas, plutôt que d'exécuter tous les tests et échoue à la fin.
Ondra Žižka

1
C'est la seule option qui a fonctionné pour moi ... L'option "-fae" n'a rien fait sur les échecs de test
Yoi

38

Essayez d'ajouter la configuration suivante pour le plugin surefire dans votre pom.xml de projet racine :

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <testFailureIgnore>true</testFailureIgnore>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

17

Une réponse rapide:

mvn -fn test

Fonctionne avec les versions de projet imbriquées.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.