Qual è la differenza tra i plugin Maven Surefire e Maven Failsafe?


Risposte:


141

In parole semplici, il plug-in Failsafe è progettato per eseguire test di integrazione mentre Surefire per eseguire test unitari .

Questo è ulteriormente spiegato nelle FAQ di Maven :

  • maven-surefire-pluginè progettato per l'esecuzione di unit test e se uno qualsiasi dei test fallisce, fallirà immediatamente la compilazione.

  • maven-failsafe-pluginè progettato per eseguire test di integrazione e disaccoppia la compilazione non riuscita se si verificano errori di test dall'esecuzione effettiva dei test.

    Il nome " failsafe " è stato scelto sia perché è sinonimo di infallibile, sia perché implica che quando fallisce, lo fa in modo sicuro.

    Il plugin Failsafe ha due obiettivi:

Guarda anche:


4
La domanda interessante è perché . Molti strumenti di costruzione funzionano perfettamente senza fare questa distinzione probabilmente piuttosto artificiale e limitata. Configurare entrambi i plugin insieme e assorbire i loro rapporti in modo coerente è piuttosto PITA.
Raphael

E no, le differenze indicate nelle altre risposte non forniscono una ragione sufficiente per avere più strumenti per quelli che dovrebbero essere filtri e flag.
Raphael

27

Da https://maven.apache.org/surefire/maven-failsafe-plugin/ , direi che la differenza tra Surefire e Failsafe è il modo in cui falliscono:

Se utilizzi il plug-in Surefire per eseguire i test, quando si verifica un errore del test, la compilazione si interromperà nella fase di test di integrazione e l'ambiente di test di integrazione non sarà stato abbattuto correttamente.

Il plug-in Failsafe viene utilizzato durante le fasi di test di integrazione e verifica del ciclo di vita della build per eseguire i test di integrazione di un'applicazione. Il plug-in Failsafe non fallirà la compilazione durante la fase di test di integrazione, consentendo così l'esecuzione della fase di test di post-integrazione.


2
Quindi la domanda diventa: perché mai usare Surefire se ci dicono che può lasciare le cose in uno stato errato?
user118967

6

Nel mio paese è il secondo risultato di Google durante la ricerca di "maven failsafe maven surefire" per arrivare a questa FAQ: Differenza tra maven-failafe-plugin e maven-safe-plugin che afferma:

maven-surefire-plugin è progettato per l'esecuzione di unit test e se uno qualsiasi dei test fallisce, fallirà immediatamente la compilazione.

maven-failsafe-plugin è progettato per eseguire test di integrazione e disaccoppia la compilazione non riuscita se ci sono errori di test dall'effettiva esecuzione dei test. "

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.