java - test - mockito maven
¿Cómo ejecutar todas las pruebas en un paquete particular con Maven? (8)
Puedo encontrar en los documentos Maven donde se muestra cómo ejecutar:
- Una sola prueba
- Todas las pruebas en una sola clase de prueba
- Todas las pruebas en clases que coinciden con un patrón particular
Pero, ¿cómo ejecutar todas las pruebas en un paquete? es posible?
Preferiría soluciones que no requieran modificar el pom.xml
o el código.
AFAIK no hay un parámetro de línea de comandos para surefire: prueba para ejecutar pruebas en un paquete específico.
Utilizo una variable de configuración para lograr el mismo efecto. Un fragmento de mi pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.7.2</version>
<configuration>
<includes>
<include>**/${testGroup}/*Test.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
Ahora si quiero ejecutar pruebas en un paquete llamado "com.example", uso el siguiente comando:
mvn test -DtestGroup=com/example
La versión pom.xml de la respuesta de O Badr:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<includes>
<!-- includes all tests, but not in subpackages -->
<include>**/package1/*</include>
<!-- includes all tests, AND in subpackages -->
<include>**/package2/**</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
Puede mencionar paquetes en su pom.xml a través de Surefire-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<includes>
<include>com.mycom.mydep.mypak.*, com.mycom.mydep.mypak2.*</include>
</includes>
</configuration>
</plugin>
Tenga en cuenta que la versión JUnit debe ser mayor que 4.8. y la versión de surefire debería ser 2.19.1 Encuentre más detalles aquí
Puede que no sea la mejor respuesta, pero podría ejecutar una sola TestSuite (que es una prueba) que incluye todas las pruebas que desea en un solo paquete.
Puede tomar la importancia de los siguientes escenarios:
(1) Omita toda la ejecución de la prueba durante la construcción de maven
mvn package -DskipTests
(2) Ejecutar todos los casos de prueba
mvn test
(3) Ejecutar un grupo de prueba específico
mvn test -DincludeGroups=TestGroup1,TestGroup2
(4) Excluir un grupo de prueba específico durante la ejecución
mvn test -DexcludeGroups=TestGroup3,TestGroup4
(5) Ejecutar pruebas de paquetes específicos
mvn test -Dtest="test.java.com.service.map.**"
(6) Ejecutar prueba específica
mvn test -Dtest=Test1,Test2
Espero que sea más útil para ti con diferentes combinaciones de ejecución.
También podría usar un patrón, por ejemplo
mvn ''-Dtest=de.mypackage.*Test'' test
ejecuta todas las pruebas en clases desde el paquete de.mipackage que termina en *Test
.
[actualización 2017/12/18]:
Dado que esto se convirtió en la respuesta aceptada, aquí hay más información:
- Maven usa el plugin Maven Surefire para ejecutar pruebas.
La sintaxis utilizada anteriormente (nombre de paquete calificado) requiere Surefire versión
2.19.1
o superior. Las versiones anteriores requieren el uso de expresiones de ruta, por ejemplomvn -Dtest="de/mypackage/*Test" test
Estoy usando comillas (`o") para evitar que el shell realice la expansión del nombre de ruta, Maven no requiere ninguna comilla.
Un único método de prueba se puede exudar usando la siguiente sintaxis
mvn -Dtest=MyUnitTest#testMethod test
Todas las pruebas de los subpaquetes pueden incluirse también, para ejecutar todas las pruebas en o debajo del paquete
de.mypackage.sub
ejecutar:mvn -Dtest="de/mypackage/sub/**" test
o con Surefire
2.19.1
o superiormvn -Dtest="de.mypackage.sub.**" test
Hay otras posibilidades, como usar expresiones regulares, ver la documentación oficial de ejecutar una sola prueba .
También se puede hacer por
mvn clean test -Dtest="**/service/**/*.java"
Por ejemplo: estoy en mi / home / repositorio y quiero ejecutar solo pruebas en la carpeta / home / repository / service
Aquí la carpeta de servicio está dentro de mi carpeta actual.
mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.*
... y si quieres incluir todos los subpaquetes:
mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.**.*