Jaka jest różnica między wtyczkami Maven Surefire i Maven Failsafe?

Odpowiedzi:

141

Krótko mówiąc, wtyczka Failsafe została zaprojektowana do uruchamiania testów integracyjnych, a Surefire do uruchamiania testów jednostkowych .

Jest to dokładniej wyjaśnione w FAQ Mavena :

  • maven-surefire-pluginjest przeznaczony do uruchamiania testów jednostkowych i jeśli którykolwiek z testów zakończy się niepowodzeniem, natychmiast zakończy się niepowodzeniem kompilacji.

  • maven-failsafe-pluginjest przeznaczony do uruchamiania testów integracyjnych i oddziela niepowodzenie kompilacji, jeśli wystąpią niepowodzenia testów, od faktycznego wykonywania testów.

    Nazwa „ failafe ” została wybrana zarówno dlatego, że jest synonimem pewności, jak i dlatego, że sugeruje, że gdy zawiedzie, robi to w bezpieczny sposób.

    Failsafe Wtyczka ma dwa cele:

Zobacz też:

kenorb
źródło
4
Ciekawe pytanie brzmi: dlaczego . Wiele narzędzi do budowania działa doskonale, nie czyniąc tego prawdopodobnie raczej sztucznego i ograniczonego rozróżnienia. Skonfigurowanie obu wtyczek razem i zbieranie ich raportów w spójny sposób to dość PITA.
Raphael
I nie, różnice podane w innych odpowiedziach nie stanowią wystarczającego powodu, aby mieć wiele narzędzi do tego, czym powinny być filtry i flagi.
Raphael
27

Z https://maven.apache.org/surefire/maven-failsafe-plugin/ powiedziałbym, że różnica między Surefire i Failsafe polega na tym, w jaki sposób zawodzą:

Jeśli używasz wtyczki Surefire do uruchamiania testów, to w przypadku niepowodzenia testu kompilacja zatrzyma się w fazie testów integracji, a środowisko testów integracji nie zostanie poprawnie usunięte.

Wtyczka Failsafe jest używana podczas testów integracji i weryfikacji faz cyklu życia kompilacji w celu wykonania testów integracyjnych aplikacji. Wtyczka Failsafe nie zawiedzie kompilacji podczas fazy testów integracji, umożliwiając w ten sposób wykonanie fazy testów po integracji.

Jonas Wolf
źródło
2
Wtedy pojawia się pytanie: po co używać Surefire, skoro mówią nam, że może pozostawić rzeczy w niewłaściwym stanie?
user118967
6

W moim kraju jest to drugi wynik w Google podczas wyszukiwania hasła „maven failafe maven surefire”, aby przejść do tego FAQ: Różnica między maven-failedafe-plugin i maven-surefire-plugin, który stwierdza:

maven-surefire-plugin jest przeznaczony do uruchamiania testów jednostkowych i jeśli którykolwiek z testów zawiedzie, natychmiast zakończy się niepowodzeniem.

maven-failafe-plugin jest przeznaczony do uruchamiania testów integracyjnych i oddziela niepowodzenie kompilacji, jeśli wystąpią niepowodzenia testów, od faktycznego wykonywania testów. "

JBA
źródło