tutorial test plugin org jupiter example java maven junit

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:

  1. Una sola prueba
  2. Todas las pruebas en una sola clase de prueba
  3. 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 ejemplo

    mvn -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 superior

    mvn -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.**.*