Qual é a diferença entre os plug-ins Maven Surefire e Maven Failsafe?

Respostas:

140

Em palavras simples, o plugin Failsafe é projetado para executar testes de integração enquanto o Surefire para executar testes de unidade .

Isso é explicado com mais detalhes nas Perguntas frequentes do Maven :

  • maven-surefire-pluginfoi projetado para executar testes de unidade e, se qualquer um dos testes falhar, o build falhará imediatamente.

  • maven-failsafe-pluginfoi projetado para executar testes de integração e dissocia a falha de construção se houver falhas de teste da execução real dos testes.

    O nome "à prova de falhas " foi escolhido porque é sinônimo de infalível e porque implica que, quando falha, o faz de maneira segura.

    O plug - in Failsafe tem dois objetivos:

Veja também:

Kenorb
fonte
4
A questão interessante é por quê . Muitas ferramentas de construção funcionam perfeitamente sem fazer essa distinção possivelmente artificial e limitada. Configurar os dois plug-ins juntos e absorver seus relatórios de maneiras consistentes é bastante PITA.
Raphael
E não, as diferenças declaradas nas outras respostas não fornecem razão suficiente para ter várias ferramentas para o que deveriam ser filtros e sinalizadores.
Raphael
27

De https://maven.apache.org/surefire/maven-failsafe-plugin/ , eu diria que a diferença entre Surefire e Failsafe é a maneira como eles falham:

Se você usar o plug-in Surefire para a execução de testes, quando ocorrer uma falha no teste, a construção irá parar na fase de teste de integração e seu ambiente de teste de integração não terá sido destruído corretamente.

O plug-in Failsafe é usado durante as fases de teste de integração e verificação do ciclo de vida de construção para executar os testes de integração de um aplicativo. O plug-in Failsafe não falhará na construção durante a fase de teste de integração, permitindo assim que a fase de teste de pós-integração seja executada.

Jonas Wolf
fonte
2
Então a pergunta é: por que usar o Surefire se eles estão nos dizendo que ele pode deixar as coisas em um estado incorreto?
user118967
6

No meu país, é o segundo resultado do Google ao pesquisar por "maven failafe maven surefire" para chegar a esta FAQ: Diferença entre maven-failafe-plugin e maven-surefire-plugin que afirma:

O plugin maven-surefire foi projetado para executar testes de unidade e se algum dos testes falhar, ele falhará na compilação imediatamente.

O plugin maven-failafe foi projetado para executar testes de integração e dissocia a falha de construção se houver falhas de teste da execução real dos testes. "

JBA
fonte