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.testsy maven.test.skipy skipTestsque 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.skiposkipTests?skipTestsomite 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.testsy 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á elverifyobjetivo 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.testsel valor predeterminadoskipTestsen su<properties>sección del pom:Si lo necesita, podría proporcionar un parámetro análogo llamado
skip.failsafe.testsa 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 latestfase en lugar de laverifyfase. ¡Tus experiencias pueden variar!Estas
skip.(surefire|failsafe).testspropiedades 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-pluginversió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#testsurefire:test#failIfNoTestsfuente
verifylugar deintegration-testen la segunda solución.failsafe:verifyal 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=truepara saltear pruebas infalibles.-DskipITs=truepara saltear pruebas a prueba de fallas.-DskipTests=truepara saltear todas las pruebas.El
pom.xmles el siguiente:fuente
skipITses 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