2009-01-05 18 views
17

Quiero usar testng con Surefire plug-in de Maven. La idea es etiquetar algunas pruebas con un grupo integrationTest y ejecutar el complemento dos veces: para el objetivo test excluyendo el grupo integrationTest y para el objetivo integration-test incluyendo el grupo integrationTest solamente.¿Cómo utilizar el complemento Maven Surefire con diferentes grupos para prueba e integración-prueba?

Encontré algunos material para ejecutar el complemento para ambos objetivos y eso funciona, pero el grupo para la segunda ejecución no funciona (no se ejecuta ninguna prueba).

Aquí es la configuración de plug-in en el elemento de construcción de mi pom.xml:

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
     <excludedGroups>integrationTest</excludedGroups> 
     <reportFormat>brief</reportFormat> 
     <trimStackTrace>true</trimStackTrace> 
     <useFile>false</useFile> 
    </configuration> 
    <executions> 
     <execution> 
     <id>integration-test</id> 
     <phase>integration-test</phase> 
     <goals> 
      <goal>test</goal> 
     </goals> 
     <configuration> 
      <groups>integrationTest</groups> 
      <excludedGroups/> 
      <reportsDirectory>${project.build.directory}/surefire-reports/integration</reportsDirectory> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

Alguna idea? mvn integration-test ejecuta todas las pruebas unitarias como se esperaba (excluyendo el grupo integrationTest), pero la segunda prueba de funcionamiento simplemente escribe:

Correr TestSuite
pruebas se ejecutan: 0, Fallos: 0 Errores: 0, pasadas por alto: 0, Tiempo transcurrido : 0,562 seg

El Resultado de la mvn test es como se esperaba, las pruebas se ejecutan y el grupo integrationTest se ignora.

Respuesta

14

Lo tengo - irritante implementación de configuración!

<excludedGroups/> no anula <excludedGroups>integrationTest</excludedGroups>. En su lugar, debe especificar un grupo (desconocido), <excludedGroups>none</excludedGroups>, por ejemplo.

+2

excludedGroups no funciona con TestNG 5.14.1 - ¡utilice 5.14.2 en su lugar! –

+2

Con Surefire 2.18.1 y JUnit 4.10, aparece el error '[ERROR] Error al ejecutar el objetivo org.apache.maven.plugins: maven-surefire-plugin: 2.18.1: test (integration-test) en el ejemplo del proyecto- proyecto: prueba de integración de ejecución de objetivo org.apache.maven.plugins: maven-surefire-plugin: 2.18.1: error de prueba: Hubo un error en el proceso bifurcado [ERROR] java.lang.RuntimeException: no se pudo categoría de carga: ninguno'. Parece que el grupo con el que reemplazas debe existir, al menos, aunque no se use en ningún lado. Lo hago con una 'interfaz pública SystemTest extiende IntegrationTest' y excluyo * esa * categoría. – orlade

9

La Failsafe plugin es la mejor manera de hacerlo (es posible que no haya estado disponible cuando publicó esta pregunta). Agrega una fase de prueba de integración al ciclo de vida de compilación. Le permite tener actividades de instalación y desmontaje antes y después de las pruebas, lo que es útil para administrar un contenedor incrustado, por ejemplo.

+0

Puede que tenga razón: la búsqueda de Maven Central data el artefacto de maven-failsafe-plugin más antiguo hasta el 12 de enero de 2010. Desde entonces, creo que se ha convertido en la solución preferida para el problema. –

Cuestiones relacionadas