2012-08-13 16 views
7

he definido la siguiente configuración en mi pom de éxito seguro con TestNG:¿Qué significa el "default-test" reposar en el plugin maven-segura

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.12</version> 
      <configuration> 
       <skipTests>${skip-all-tests}</skipTests> 
      </configuration> 
      <executions> 
       <execution> 
        <id>unit-tests</id> 
        <phase>test</phase> 
        <goals> 
         <goal>test</goal> 
        </goals> 
        <configuration> 
         <skip>${skip-unit-tests}</skip> 
         <groups>unit</groups> 

         <excludedGroups>integration</excludedGroups> 
        </configuration> 
       </execution> 
       <execution> 
        <id>integration-tests</id> 
        <phase>integration-test</phase> 
        <goals> 
         <goal>test</goal> 
        </goals> 
        <configuration> 
         <skip>${skip-integration-tests}</skip> 
         <groups>integration</groups> 
         <excludedGroups>unit</excludedGroups> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

Pero parece que las dos ejecuciones siempre están precedidas por una ejecución de "prueba predeterminada" que parece ejecutar cada método anotado en @test (al menos eso creo).

--- maven-surefire-plugin:2.12:test (default-test) @ my-project 

Por ejemplo, al ejecutar "mvn test" en el proyecto, se llevan a cabo dos ejecuciones de prueba. La "prueba predeterminada" y la "prueba de la unidad".

¿Podría alguien explicarme esto un poco más? ¿Se puede deshabilitar o controlar (configurar qué se prueba y qué no)?

+0

Eche un vistazo a su pom resultante a través de mvn help: effective-pom. Además, lo mejor para definirlo es ponerlo en pluginManagement y ejecutar las pruebas de integración con maven-failsafe-plugin y NO a través de maven-surefire-plugin. – khmarbaise

+0

¡Gracias, eso ya me ayudó mucho! Si pone su comentario en un formulario de respuesta, le otorgaré los créditos. –

Respuesta

15

La gente quería tener una forma de anular las ejecuciones integradas predeterminadas de los complementos dentro de Maven.

Maven 3 (o puede haber sido introducido desde la versión 2.1.0 o 2.2.0) resolvió esto definiendo una identificación de ejecución predeterminada para cada ejecución de complemento agregada al pom efectivo por el ciclo de vida del paquete.

El nombre de esta identificación implícita es siempre default-_____ No puedo recordar la regla exacta para la que se genera.

Por lo tanto, puede anular las ejecuciones inyectadas del paquete definiendo una ejecución coincidente.

Para resolver su caso yo bien cambiar <id>unit-tests</id>-<id>default-test</id> o añadir

  <execution> 
       <id>default-test</id> 
       <configuration> 
        <skip>true</skip> 
       </configuration> 
      </execution> 

o bien tendrá el mismo efecto, aunque la solución <id>unit-tests</id>-<id>default-test</id> será ligeramente con más prestaciones ya que sólo necesita para invocar dos ejecuciones de infalible.

La otra cosa que señalaría es que probablemente sería mejor utilizar maven-failsafe-plugin para ejecutar sus pruebas de integración, ya que en algún momento puede que desee hacer algunas cosas antes de & prueba de integración posterior y failsafe está diseñado para ese caso de uso (aunque debería ser trivial cambiar más adelante en la línea)