Tengo una compilación Maven en la que utilizo el complemento SureFire para ejecutar algunas pruebas unitarias, y el complemento FailSafe para ejecutar algunas pruebas de integración. Me gustaría una forma de ejecutar solo las pruebas del complemento FailSafe.
No es una buena solución para mí agregar diferentes perfiles o cualquier cosa en el pom, porque es una compilación de múltiples módulos y no quiero tener que editar el pom de cada módulo.
Hay skip.tests
y maven.test.skip
y skipTests
que detienen todas las pruebas, y skipITs
, que detiene solo el complemento a prueba de fallos.
Entonces, ¿hay un indicador de línea de comando para Maven skipITs
, pero en cambio con la funcionalidad de "onlyITs"?
maven
build
integration-testing
maven-surefire-plugin
maven-failsafe-plugin
Matthew Gilliard
fuente
fuente
maven.test.skip
oskipTests
?skipTests
omite solo las pruebas infalibles, ¡no la prueba a prueba de fallas! Tal vez es una nueva característica?Respuestas:
Encontré que la forma más sencilla de omitir solo las pruebas de seguro seguro es configurar el seguro seguro ( pero no a prueba de fallas ) de la siguiente manera:
Esto le permite ejecutar
mvn verify -Dskip.surefire.tests
y solo seguro, no a prueba de fallas, se omitirán las pruebas; también ejecutará todas las demás fases necesarias, incluidas la preintegración y la posintegración, y también ejecutará elverify
objetivo que se requiere para fallar realmente su compilación de Maven si sus pruebas de integración fallan.Tenga en cuenta que esto redefine la propiedad utilizada para especificar que las pruebas se deben omitir, por lo que si proporciona el canónico
-DskipTests=true
, surefire lo ignorará pero a prueba de fallas lo respetará, lo que puede ser inesperado, especialmente si tiene compilaciones / usuarios existentes que ya especifican ese indicador. Una solución alternativa simple parece serskip.surefire.tests
el valor predeterminadoskipTests
en su<properties>
sección del pom:Si lo necesita, podría proporcionar un parámetro análogo llamado
skip.failsafe.tests
a prueba de fallas, sin embargo, no lo he encontrado necesario, porque las pruebas unitarias generalmente se ejecutan en una fase anterior, y si quiero ejecutar pruebas unitarias pero no pruebas de integración, ejecutaría latest
fase en lugar de laverify
fase. ¡Tus experiencias pueden variar!Estas
skip.(surefire|failsafe).tests
propiedades probablemente deberían integrarse en el propio código seguro / a prueba de fallas, pero no estoy seguro de cuánto violaría el ethos "son exactamente el mismo complemento, excepto por 1 pequeña diferencia".fuente
<skipTests>false</skipTests>
aún funciona con cualquier combinación de -DskipTests o -Dskip.surefire.tests ya que los argumentos de la línea de comando parecen sobrescribir las propiedades stackoverflow.com/questions/13708738 / ... es posible que desee agregar eso a su solución<skipTests>${skip.surefire.tests}</skipTests>
No funciona con lamaven-surefire-plugin
versión3.0.0-M3
. Todas las pruebas infalibles siguen ejecutándose. ¿Alguien más encontró esto? Sin embargo, la siguiente solución de Sean Patrick Floyd está funcionando.Una solución alternativa sería llamar a:
Es cierto que esto es feo, pero puede resolver su problema.
O (otro truco):
Referencia:
surefire:test#test
surefire:test#failIfNoTests
fuente
verify
lugar deintegration-test
en la segunda solución.failsafe:verify
al final del primer hack (mvn clean test-compile failsafe:integration-test failsafe:verify
) fallará la compilación si falla una de las pruebas de integración.Estoy usando el código del Blog de Antonio Goncalves , que funciona perfecto.
Puede usar las siguientes propiedades:
-DskipUTs=true
para saltear pruebas infalibles.-DskipITs=true
para saltear pruebas a prueba de fallas.-DskipTests=true
para saltear todas las pruebas.El
pom.xml
es el siguiente:fuente
skipITs
es el valor predeterminado.¡Espero que esto ayude!
Intente ejecutar la prueba solo con FailSafe (complemento para prueba de integración; le permitirá ejecutar solo pruebas de integración con este tipo de nombres, de forma predeterminada: * / IT .java, ** / IT.java, * /*ITCase.java ;, pero puede cambiarlo fácilmente desde el archivo pom)
Y cuando quiera usar solo SureFire (complemento para pruebas unitarias)
o una prueba a la vez con:
fuente
Me gusta esto para que cada fase se ejecute normalmente:
fuente
Para ampliar los comentarios de @danidemi y @GuillaumeHusta:
Por lo tanto, para omitir las pruebas unitarias, pero no las pruebas de integración, puede hacerlo si está utilizando la última versión del complemento Failsafe:
(por favor dale un voto positivo a los comentarios mencionados si esto te ayuda)
fuente
Intente ejecutar su integración o pruebas unitarias en un perfil separado. Luego puede habilitar / deshabilitar el perfil.
fuente