Was ist der Unterschied zwischen den Plugins Maven Surefire und Maven Failsafe?

Antworten:

138

Mit einfachen Worten, das Failsafe-Plugin wurde entwickelt, um Integrationstests auszuführen , während Surefire Unit-Tests ausführt .

Dies wird in den Maven-FAQ näher erläutert :

  • maven-surefire-pluginwurde für die Ausführung von Komponententests entwickelt. Wenn einer der Tests fehlschlägt, schlägt der Build sofort fehl.

  • maven-failsafe-pluginwurde für die Ausführung von Integrationstests entwickelt und entkoppelt fehlgeschlagene Builds, wenn Testfehler bei der tatsächlichen Ausführung der Tests auftreten.

    Der Name " fehlersicher " wurde sowohl gewählt, weil er ein Synonym für todsicher ist, als auch weil er impliziert, dass er auf sichere Weise versagt, wenn er fehlschlägt.

    Das Failsafe Plugin hat zwei Ziele:

Siehe auch:

Kenorb
quelle
4
Die interessante Frage ist warum . Viele Build-Tools funktionieren perfekt, ohne diese wohl eher künstliche und begrenzte Unterscheidung zu treffen. Beide Plugins zusammen zu konfigurieren und ihre Berichte auf konsistente Weise zu absorbieren, ist eine echte PITA.
Raphael
Und nein, die in den anderen Antworten angegebenen Unterschiede bieten keinen ausreichenden Grund dafür, mehrere Tools für Filter und Flags zu haben.
Raphael
27

Unter https://maven.apache.org/surefire/maven-failsafe-plugin/ würde ich sagen, dass der Unterschied zwischen Surefire und Failsafe darin besteht, wie sie versagen:

Wenn Sie das Surefire-Plugin zum Ausführen von Tests verwenden, wird der Build bei einem Testfehler in der Phase des Integrationstests gestoppt und Ihre Integrationstestumgebung wurde nicht ordnungsgemäß heruntergefahren.

Das Failsafe-Plugin wird während des Integrationstests verwendet und überprüft die Phasen des Build-Lebenszyklus, um die Integrationstests einer Anwendung auszuführen. Das Failsafe-Plugin schlägt den Build während der Integrationstestphase nicht fehl, sodass die Phase nach dem Integrationstest ausgeführt werden kann.

Jonas Wolf
quelle
1
Dann stellt sich die Frage: Warum sollte man Surefire jemals benutzen, wenn sie uns sagen, dass es Dinge in einem falschen Zustand belassen kann?
user118967
6

In meinem Land ist es das zweite Google-Ergebnis bei der Suche nach "Maven Failsafe Maven Surefire", um zu dieser FAQ zu gelangen: Unterschied zwischen Maven-Failsafe-Plugin und Maven-Surefire-Plugin mit folgenden Angaben :

Das Maven-Surefire-Plugin wurde für die Ausführung von Komponententests entwickelt. Wenn einer der Tests fehlschlägt, schlägt der Build sofort fehl.

Das Maven-Failsafe-Plugin wurde für die Ausführung von Integrationstests entwickelt und entkoppelt fehlgeschlagene Builds, wenn bei der tatsächlichen Ausführung der Tests Testfehler auftreten. "

JBA
quelle