2012-07-09 34 views
10

Tengo muchas suites de prueba en TestNG. Estos son archivos XML. Quiero poder elegir varias suites XML al ejecutar la prueba de integración de maven.Cómo parametrizar el plugin Maven surefire para que pueda elegir qué suites TestNG ejecutar

Actualmente puedo añadir los archivos de baño a pom.xml así:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
    <suiteXmlFiles> 
     <suiteXmlFile>${pathToMySuiteFile_1}</suiteXmlFile> 
     <suiteXmlFile>${pathToMySuiteFile_1}</suiteXmlFile> 
    </suiteXmlFiles> 
    </configuration> 
</plugin> 

Esta solución tiene algunas limitaciones. Solo puedo cambiar el camino al conjunto de pruebas que tengo definido en pom.xml. Entonces, en mi ejemplo, siempre tiene que haber dos archivos. No puedo correr, digamos, 5 suites o solo una.

¿Hay alguna forma de parametrizar de algún modo toda la sección "suiteXmlFiles" en pom.xml?

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
    <suiteXmlFiles> 
     ${multiple_paths_ToMySuiteFiles} 
    </suiteXmlFiles> 
    </configuration> 
</plugin> 

Correr todo lo que coincida dada grupo de prueba no es una opción para mí: no quiero cargar todas las suites que tengo y luego ejecutar sólo las pruebas seleccionadas utilizando grupos en la suite TestNG. La razón es que un informe que se genera después de ejecutar todas las suites de prueba con filtros de grupo es diferente de un informe cuando solo se ejecutaron las suites de prueba seleccionadas.

Respuesta

0

Puede utilizar groups parámetro o especificar -Dgroups = ... en la línea de comandos:

(proveedor de TestNG/JUnit47 con JUnit4.8 + solamente) Grupos para esta prueba. Solo las clases/métodos/etc. decorados con uno de los grupos especificados aquí se incluirán en la ejecución de prueba, si se especifica. Para JUnit, este parámetro fuerza el uso del proveedor 4.7. Este parámetro se ignora si se especifica el parámetro suiteXmlFiles. .

+0

lo mencioné que yo no quiero usar grupos, ya que rompe informe de resultados de la prueba y no es lo suficientemente todos modos – maestr0

+0

flexible o no flexible, pero eso es tu única elección Puede ser tan flexible como granular sus grupos. Por supuesto, además de ejecutar pruebas individuales. –

5

También solucionamos este problema con nuestras pruebas. La solución actual que usamos ahora es definir una variable de propiedad en la sección de propiedad e inyectarla en el bloque suiteXmlFiles seguro-seguro.

<properties> 
    <!-- Default suites --> 
    <batsSuiteFile>${project.build.testOutputDirectory}/BatsTests.xml</batsSuiteFile> 
    <smokeSuiteFile>${project.build.testOutputDirectory}/SmokeTests.xml</smokeSuiteFile> 

    <!-- Default suite files if not being specified from mvn command line --> 
    <defaultSuiteFiles>${batsSuiteFile},${smokeSuiteFile}</defaultSuiteFiles> 
    <suiteFile>${defaultSuiteFiles}</suiteFile> 
</properties> 

Luego, en la sección de plug-in ...

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.12</version> 
    <configuration> 
     <suiteXmlFiles> 
      <!-- Suite file injection parameter from command line --> 
      <suiteXmlFile>${suiteFile}</suiteXmlFile> 
     </suiteXmlFiles> 
    </configuration> 
</plugin> 

Si no se especifica nada desde la línea de comandos que va a caer hacia atrás y por defecto a las 2 suites especificados anteriormente en la sección de propiedades. Entonces, si usted quiere poner en marcha un conjunto específico de archivos de baño que puede hacer:

mvn test -DsuiteFile=test1.xml,test2.xml 

Sorprendentemente partir de los documentos de Maven que espera que los suiteXmlFiles arg sólo debe anular esto desde la línea de comandos y deben aceptar sólo una coma lista delimitada de testng xmls http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#suiteXmlFiles

Si alguien tiene alguna otra forma mejor, por favor comparta.

+1

@ maestr0 por favor ayude a marcar la respuesta como aceptada si fue de ayuda. – mekdev

+0

Otra forma es ejecutar debajo del conjunto de comandos uno tras otro mvn -D prueba $ {path}/test1 test, mvn -D prueba $ {path}/test2 test y la dependencia es org.apache.maven.plugins experto-segura-plugin 2.12 $ {} .xml pruebas Badrinath

+0

Use '-Dsurefire.suiteXmlFiles' en su lugar. Ver mi respuesta a continuación. – norbertpy

12

Según User Property de suiteXmlFiles Se puede utilizar:

mvn test -Dsurefire.suiteXmlFiles=test1.xml,test2.xml 
+0

Utilizando esta solución, no es necesario especificar la etiqueta en el archivo pom.xml. La mejor respuesta. –

Cuestiones relacionadas