test plugin mvn failsafe example maven-2 integration-testing maven-surefire-plugin

maven 2 - plugin - Cómo ejecutar una prueba individual en el objetivo de prueba de integración en maven



maven test profile (6)

Acabo de toparme con esto yo mismo. Algo como esto funcionó bien para mí:

mvn -Pintegration-test -Dtest=<my-test>

El truco consistía en asegurarse de que el grupo de prueba se mencionara antes de la parte de "prueba".

Tenemos cientos de pruebas definidas para nuestro ciclo de vida de fase de prueba de integración en maven, y tardan mucho tiempo en finalizar.

Lo que quiero hacer es ejecutar solo una prueba en la prueba de integration-test . Intenté hacer:

mvn -Dtest=<my-test> integration-test

Pero eso no funciona. El -Dtest ejecuta solo las pruebas en el objetivo de la prueba de unidad, no en la fase de prueba de integración. Intenté -Dintegration-test=<my-test> lugar, y eso fue ignorado.

Hay una manera de hacer eso ?

Mi configuración es:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <executions> <execution> <id>surefire-it</id> <phase>integration-test</phase> <goals> <goal>test</goal> </goals> <configuration> <excludes> <exclude>none</exclude> </excludes> <includes> <include>**/api/**</include> </includes> .....


La documentación de Failsafe haría que especifiques la prueba de la siguiente manera:

mvn -Dit.test=BrokenIT verify

Sin embargo, -Dit.test no parece funcionar más. Por el contrario, el mismo parámetro utilizado para especificar una prueba Surefire también funcionará para Failsafe. Por ejemplo:

mvn -Dtest=WorksIT verify

He archivado un bug ( EDITAR: que se cerró como "No se puede reproducir" en 2.12) para corregir la documentación.


Luché a través de esto y creé un perfil adicional para usar cuando quería ejecutar solo una prueba de integración. Espero haber extraído con éxito la parte correcta aquí:

<profile> <id>integrationTestSingle</id> <build> <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <executions> <execution> <id>surefire-it</id> <phase>integration-test</phase> <goals> <goal>test</goal> </goals> <configuration> <includes> <include>**/integration/**/${test}.java</include> </includes> <skipTests>false</skipTests> </configuration> </execution> </executions> <configuration> <argLine>-Xms256M -Xmx768M -XX:MaxPermSize=256M</argLine> </configuration> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <executions> <execution> <id>default-test</id> <configuration> <skipTests>true</skipTests> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile>

Ahora, llamo a maven con el perfil integrationTestSingle y con -DfailIfNoTests=false -Dtest=NameOfTest , y no ejecuta ninguna de las pruebas regulares durante la fase de "prueba" normal, y ejecuta solo la prueba NameOfTest durante la prueba de integración fase.


No estoy seguro acerca de JUnit, pero para TestNG la estrategia sería definir un archivo XML suite con solo una prueba, y luego en su POM configurar el plugin surefire para que solo se ejecute. En tu POM, tendrías algo como esto (descargo de responsabilidad, esto no se ha probado):

<plugin> <artifactId>maven-surefire-plugin</artifactId> <executions> <execution> <phase>integration-test</phase> <configuration> <suiteXmlFiles> <suiteXmlFile>single-test.xml</suiteXmlFile> </suiteXmlFiles> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin>

Para configurar el archivo de suite, vea http://testng.org/doc/documentation-main.html



solo agrega -DfailIfNoTests=false funciona para mí con testNG. Algo como esto:

mvn integration-test -Dtest=aITest -DfailIfNoTests=false