Quelle est la différence entre les plugins Maven Surefire et Maven Failsafe?

Réponses:

141

En termes simples, le plugin Failsafe est conçu pour exécuter des tests d'intégration tandis que Surefire pour exécuter des tests unitaires .

Ceci est expliqué plus en détail dans la FAQ Maven :

  • maven-surefire-pluginest conçu pour exécuter des tests unitaires et si l'un des tests échoue, la génération échouera immédiatement.

  • maven-failsafe-pluginest conçu pour exécuter des tests d'intégration et dissocie l'échec de la construction en cas d'échec de test de l'exécution réelle des tests.

    Le nom de « sécurité intégrée » a été choisi à la fois parce qu'il est synonyme de sécurité et parce qu'il implique que lorsqu'il échoue, il le fait de manière sûre.

    Le plugin Failsafe a deux objectifs:

Voir également:

Kenorb
la source
4
La question intéressante est pourquoi . De nombreux outils de construction fonctionnent parfaitement sans faire cette distinction sans doute plutôt artificielle et limitée. Configurer les deux plugins ensemble et absorber leurs rapports de manière cohérente est tout à fait le PITA.
Raphael
Et non, les différences énoncées dans les autres réponses ne fournissent pas une raison suffisante pour avoir plusieurs outils pour ce que devraient être des filtres et des indicateurs.
Raphael
27

De https://maven.apache.org/surefire/maven-failsafe-plugin/ , je dirais que la différence entre Surefire et Failsafe est la façon dont ils échouent:

Si vous utilisez le plug-in Surefire pour exécuter des tests, lorsque vous rencontrez un échec de test, la compilation s'arrêtera à la phase de test d'intégration et votre environnement de test d'intégration n'aura pas été détruit correctement.

Le plug-in Failsafe est utilisé pendant les phases de test d'intégration et de vérification du cycle de vie de construction pour exécuter les tests d'intégration d'une application. Le plug-in Failsafe n'échouera pas la construction pendant la phase de test d'intégration, permettant ainsi à la phase de test post-intégration de s'exécuter.

Jonas Wolf
la source
2
Ensuite, la question devient: pourquoi utiliser Surefire s'ils nous disent qu'il peut laisser des choses dans un état incorrect?
user118967
6

Dans mon pays, c'est le deuxième résultat Google lors de la recherche de "maven failafe maven surefire" pour accéder à cette FAQ: Différence entre maven-failafe-plugin et maven-surefire-plugin qui stipule:

maven-surefire-plugin est conçu pour exécuter des tests unitaires et si l'un des tests échoue, la compilation échouera immédiatement.

maven-failafe-plugin est conçu pour exécuter des tests d'intégration, et dissocie l'échec de la construction en cas d'échec des tests de l'exécution réelle des tests. "

JBA
la source