¿Cuál es la diferencia entre los complementos Maven Surefire y Maven Failsafe?

Respuestas:

140

En palabras simples, el complemento Failsafe está diseñado para ejecutar pruebas de integración, mientras que Surefire para ejecutar pruebas unitarias .

Esto se explica con más detalle en las preguntas frecuentes de Maven :

  • maven-surefire-pluginestá diseñado para ejecutar pruebas unitarias y si alguna de las pruebas falla, la compilación fallará inmediatamente.

  • maven-failsafe-pluginestá diseñado para ejecutar pruebas de integración y desacopla las fallas de la compilación si hay fallas de prueba al ejecutar las pruebas.

    El nombre "a prueba de fallos " fue elegido tanto porque es sinónimo de infalible como porque implica que cuando falla, lo hace de forma segura.

    El complemento Failsafe tiene dos objetivos:

Ver también:

Kenorb
fuente
4
La pregunta interesante es por qué . Muchas herramientas de construcción funcionan perfectamente sin hacer esta distinción posiblemente bastante artificial y limitada. Configurar ambos complementos juntos y absorber sus informes de manera consistente es todo un PITA.
Raphael
Y no, las diferencias señaladas en las otras respuestas no dan razón suficiente para tener múltiples herramientas para lo que deberían ser filtros y banderas.
Raphael
27

De https://maven.apache.org/surefire/maven-failsafe-plugin/ , diría que la diferencia entre Surefire y Failsafe es la forma en que fallan:

Si usa el complemento Surefire para ejecutar pruebas, cuando tenga una falla en la prueba, la compilación se detendrá en la fase de prueba de integración y su entorno de prueba de integración no se habrá destruido correctamente.

El complemento Failsafe se utiliza durante la prueba de integración y las fases de verificación del ciclo de vida de la compilación para ejecutar las pruebas de integración de una aplicación. El complemento Failsafe no fallará la compilación durante la fase de prueba de integración, lo que permitirá que se ejecute la fase de prueba posterior a la integración.

Jonas Wolf
fuente
2
Entonces la pregunta es: ¿por qué usar Surefire si nos dicen que puede dejar cosas en un estado incorrecto?
user118967
6

En mi país, es el segundo resultado de Google al buscar "maven failsafe maven surefire" para acceder a estas preguntas frecuentes: Diferencia entre maven-failsafe-plugin y maven-surefire-plugin que dice:

maven-surefire-plugin está diseñado para ejecutar pruebas unitarias y si alguna de las pruebas falla, la compilación fallará inmediatamente.

maven-failsafe-plugin está diseñado para ejecutar pruebas de integración, y desacopla las fallas en la compilación si hay fallas en la ejecución de las pruebas ".

JBA
fuente