¿Cómo ejecutar todas las pruebas en un paquete particular con Maven?

4 minutos de lectura

avatar de usuario
eric wilson

puedo encontrar en el Documentos expertos donde 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 código.

  • prueba esto Enlace.

    – Asad Rashid

    25 de julio de 2011 a las 17:30

  • Si está utilizando intellij, simplemente seleccione el paquete en la ventana del proyecto y haga “Ctrl+Shift+F10”. Sé que esto no está usando directamente el experto, pero espero que sea útil para alguien.

    – im_bhatman

    8 sep 2020 a las 14:25

avatar de usuario
Robin

También podría usar un patrón, por ejemplo

 mvn '-Dtest=de.mypackage.*Test' test

ejecuta todas las pruebas en las clases del paquete de.mipaquete terminando en *Test.

[update 2017/12/18]:
Dado que esta se convirtió en la respuesta aceptada, aquí hay más información:

  • Maven usa el Complemento Maven Surefire para ejecutar pruebas.
  • La sintaxis utilizada anteriormente (nombre de paquete calificado) requiere la versión Surefire 2.19.1 ¡o mas alto! 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 la ruta, Maven no requiere comillas.

  • Se puede ejecutar un solo método de prueba usando la siguiente sintaxis

    mvn -Dtest=MyUnitTest#testMethod test
    
  • También se pueden incluir todas las pruebas de los subpaquetes, 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 mas alto

    mvn -Dtest="de.mypackage.sub.**" test
    

Hay más posibilidades, como usar expresiones regulares, consulte la documentación oficial de ejecución de una sola prueba.

  • ¡Funcionó perfectamente para mí! prueba mvn -Dtest=com.example.handler.*Prueba

    – Jared Knipp

    12 de abril de 2013 a las 16:06


  • Incluso puedes hacer mvn '-Dtest=de.mypackage.**.*Test' test para incluir subpaquetes

    – Ene

    24 de noviembre de 2014 a las 16:49

  • En Maven 3 funciona bien cuando no uso apóstrofe (‘)

    -Krzysztof Walczewski

    21 de noviembre de 2017 a las 12:49

  • Cuando desee probar muchos paquetes, puede enumerarlos todos (simplemente escríbalos todos después de la coma), por ejemplo: mvn -Dtest=com.packadmin.*Test,com.packclient.*Test test

    -Krzysztof Walczewski

    21 de noviembre de 2017 a las 12:51


  • Para cualquier otra persona que intente ejecutar pruebas dentro de un paquete, debe terminar con **.*. Ex. -Dtest="com.name.**.*"

    – Deadron

    12 mayo 2020 a las 21:55

avatar de usuario
dispositivo nulo

AFAIK no hay un parámetro de línea de comando para surefire: test para ejecutar pruebas en un paquete específico.

Yo uso 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

avatar de usuario
Radadiya Nikunj

Puede tomar referencia de los siguientes escenarios:

(1) Omitir todas las ejecuciones de prueba durante la compilación de maven

mvn package -DskipTests

(2) Ejecutar todos los casos de prueba

mvn test

(3) Ejecutar grupo de prueba específico

mvn test -DincludeGroups=TestGroup1,TestGroup2

(4) Excluir grupo de prueba específico durante la ejecución

mvn test -DexcludeGroups=TestGroup3,TestGroup4

(5) Ejecutar casos de prueba de paquetes específicos

mvn test -Dtest="test.java.com.service.map.**"

(6) Ejecutar prueba específica

mvn test -Dtest=Test1,Test2

Espero que le sea más útil con una combinación diferente de ejecución.

mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.*

…y si desea incluir todos los subpaquetes:

mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.**.*

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>

  • Mis viejas preguntas sobre Maven obtienen visitas bastante consistentes… No estoy seguro de si debería estar feliz o triste por eso.

    –Eric Wilson

    16 de diciembre de 2017 a las 18:47

avatar de usuario
Cristina

Tuve el mismo problema (cómo ejecutar todas las pruebas en un paquete en particular) e intenté muchas formas, dos comandos que funcionaron fueron:

mvn -Dtest=com.package.my.package.** test

mvn -Dtest=com.package.my.package.**.* test

  • Mis viejas preguntas sobre Maven obtienen visitas bastante consistentes… No estoy seguro de si debería estar feliz o triste por eso.

    –Eric Wilson

    16 de diciembre de 2017 a las 18:47

avatar de usuario
Tristán

Puede que no sea la mejor respuesta, pero podría ejecutar un solo TestSuite (que es una prueba) que incluye todas las pruebas que desea en un solo paquete.

¿Ha sido útil esta solución?