web-dev-qa-db-fra.com

Faire en sorte que Maven exécute tous les tests, même lorsque certains échouent

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

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

Comment faire pour que Maven exécute tous les tests?

224
ripper234

Je viens de trouver le paramètre "-fae", qui oblige Maven à exécuter tous les tests sans s'arrêter en cas d'échec.

91
ripper234

De la documentation:

-fae, --fail-at-endN'échouez que la construction par la suite; autorisez toutes les générations non impactées à continuer

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

Donc, si vous testez un module , vous êtes en sécurité avec -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.
-fae continuera 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.

318
despot

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

mvn install -Dmaven.test.failure.ignore=true
74
Pascal Thivent

Essayez d’ajouter la configuration suivante pour le plugin surefire dans votre pom.xml of 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>
29
nybon

Une réponse rapide:

mvn -fn test

Fonctionne avec les constructions de projet imbriquées.

13
rustyx