Eu tenho uma compilação do Maven na qual uso o plug-in SureFire para executar alguns testes de unidade e o plug-in FailSafe para executar alguns testes de integração. Eu gostaria de uma maneira de executar apenas os testes do plugin FailSafe.
Não é uma boa solução adicionar perfis diferentes ou qualquer coisa no pom, porque é uma compilação de vários módulos e não quero editar o pom de cada módulo.
Existem skip.tests
e maven.test.skip
e skipTests
quais interrompem todos os testes e skipITs
, que interrompe apenas o plug-in à prova de falhas.
Então, existe um sinalizador de linha de comando para o Maven skipITs
, mas com a funcionalidade de "onlyITs"?
maven
build
integration-testing
maven-surefire-plugin
maven-failsafe-plugin
Matthew Gilliard
fonte
fonte
maven.test.skip
ouskipTests
?skipTests
pula apenas os testes infalíveis, não o teste à prova de falhas! Talvez seja um novo recurso?Respostas:
Eu encontrei a maneira mais simples de ignorar apenas os testes surefire é configurar o surefire ( mas não com segurança ) da seguinte maneira:
Isso permite que você execute
mvn verify -Dskip.surefire.tests
e apenas testes infalíveis, sem falhas, serão ignorados; Ele também executará todas as outras fases necessárias, incluindo pré-integração e pós-integração, e também executará averify
meta necessária para realmente falhar na sua construção, se seus testes de integração falharem.Observe que isso redefine a propriedade usada para especificar que os testes devem ser ignorados; portanto, se você fornecer o canônico
-DskipTests=true
, o surefire o ignorará, mas o fail-safe o respeitará, o que pode ser inesperado, especialmente se você já tiver compilações / usuários especificando esse sinalizador. Uma solução simples parece ter como padrãoskip.surefire.tests
o valor deskipTests
em sua<properties>
seção do pom:Se necessário, você pode fornecer um parâmetro análogo chamado
skip.failsafe.tests
à prova de falhas, no entanto, não o acho necessário - porque os testes de unidade geralmente são executados em uma fase anterior, e se eu quiser executar testes de unidade, mas não testes de integração, eu executaria atest
fase em vez daverify
fase. Suas experiências podem variar!Essas
skip.(surefire|failsafe).tests
propriedades provavelmente devem ser integradas no próprio código infalível / à prova de falhas, mas não tenho certeza de quanto isso violaria o ethos "eles são exatamente o mesmo plugin, exceto por uma pequena diferença".fonte
<skipTests>false</skipTests>
ainda funciona com qualquer combinação de -DskipTests ou -Dskip.surefire.tests, pois os argumentos da linha de comando parecem substituir as propriedades stackoverflow.com/questions/13708738 / ... você pode adicionar isso à sua solução<skipTests>${skip.surefire.tests}</skipTests>
não está trabalhando commaven-surefire-plugin
a versão3.0.0-M3
. Todos os testes infalíveis ainda estão em execução. Alguém mais encontrou isso? No entanto, a solução abaixo de Sean Patrick Floyd está funcionando.Uma solução alternativa seria chamar:
É certo que isso é feio, mas pode resolver seu problema.
Ou (outro hack):
Referência:
surefire:test#test
surefire:test#failIfNoTests
fonte
verify
em vez deintegration-test
na 2ª solução.failsafe:verify
no final do primeiro hack (mvn clean test-compile failsafe:integration-test failsafe:verify
), a construção falhará se um dos testes de integração falhar.Estou usando o código do Blog Antonio Goncalves , que funciona perfeitamente.
Você pode usar as seguintes propriedades:
-DskipUTs=true
para pular testes infalíveis.-DskipITs=true
para pular testes à prova de falhas.-DskipTests=true
para pular todos os testes.O
pom.xml
é o seguinte:fonte
skipITs
é o padrão.Espero que isto ajude!
Tente executar o teste apenas com o FailSafe (plug-in para integração-teste - ele permitirá executar apenas testes de integração com esse tipo de nome, por padrão: * / IT .java, ** / IT.java, * /*ITCase.java ;, mas você pode facilmente mudar isso do arquivo pom)
E quando você deseja usar apenas o SureFire (plug-in para teste de unidade)
ou um teste de cada vez com:
fonte
Eu faço assim para que todas as fases sejam normalmente executadas:
fonte
Para expandir os comentários de @danidemi e @GuillaumeHusta:
Portanto, para pular testes de unidade, mas não testes de integração, você pode fazer isso se estiver usando a versão mais recente do plug-in Failsafe:
(por favor, dê um voto positivo nos comentários mencionados, se isso o ajudar)
fonte
Tente executar seus testes de integração ou unidade em um perfil separado. Então você pode simplesmente ativar / desativar o perfil.
fonte