2011-07-25 28 views
29

puedo encontrar en el Maven docs donde se muestra cómo ejecutar:¿Cómo ejecutar todas las pruebas en un paquete particular con Maven?

  1. Una sola prueba
  2. Todas las pruebas en una sola clase de prueba
  3. Todas las pruebas en las 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 la modificación del código pom.xml.

+0

probar esto [link] (http://maven.apache.org/plugins/maven -surefire-plugin/examples/inclusion-exclusion.html). –

Respuesta

99

Se puede usar un patrón así, por ejemplo

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

ejecuta todas las pruebas en las clases de paquete de.mypackage termina el *Test.

[Actualización 12/18/2017]:
Dado que este se convirtió en la respuesta aceptada, aquí hay algo de información adicional:

  • Maven utiliza el Maven Surefire plugin para ejecutar pruebas.
  • La sintaxis utilizada anteriormente (nombre del paquete calificado) requiere la versión Surefire 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 prevenir que el shell realiza la expansión de nombre de camino, Maven no requiere comillas.

  • Un método de ensayo individual se puede exuted utilizando la siguiente sintaxis

    mvn -Dtest=MyUnitTest#testMethod test 
    
  • Todas las pruebas de subpaquetes pueden ser incluye también, a fin de ejecutar todas las pruebas en o por debajo de paquete de.mypackage.sub ejecutar:

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

    o con éxito seguro 2.19.1 o superior

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

Existen otras posibilidades, como el uso de expresiones regulares, consulte official documentation of running a single test.

+2

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

+19

Incluso puede hacer 'mvn '-Dtest = de.mypackage. **. * Test' test' para incluir subpaquetes – Jan

+1

En Maven 3 funciona bien cuando no lo hago t use apostrophe (') –

1

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.

19

AFAIK no hay ningún 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 denominado "com.example", utilizo el siguiente comando:

mvn test -DtestGroup=com/example 
6
mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.* 

... y si desea incluir todos los paquetes de sub:

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

También se puede hacer por

mvn clean test -Dtest="**/service/**/*.java" 

por ejemplo: yo estoy en mi/home/repositorio y quiero ejecutar pruebas en/home/repository/service folder only

Aquí la carpeta de servicio está dentro de mi carpeta actual.

0

Se puede mencionar paquetes en su pom.xml a través de éxito seguro-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 debería ser mayor que 4,8. y la versión del éxito seguro debe ser 2.19.1 Find more details here

1

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> 
+1

Mis viejas preguntas sobre Maven obtienen puntos de vista bastante consistentes ... No estoy seguro de si debería estar feliz o triste por eso. –

Cuestiones relacionadas