2010-11-11 21 views
10

Quiero correr clase de prueba única de la línea de comandos usando Maven y TestNGCorrer clase de prueba o grupo con éxito seguro y TestNG

cosas que no funciona:

mvn -Dtest=ClassName test 

he definido en grupos pom.xml, y esta clase no está en uno de esos grupos. Entonces fue excluido por esos motivos.

mvn -Dgroups=skipped-group test 
mvn -Dsurefire.groups=skipped-group test 

cuando config es

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.7.1</version> 
    <configuration> 
    <groups>functest</groups> 
    </configuration> 
</plugin> 

parámetros de trabajo bien en no hay grupos definidos en pom.xml.

Del mismo modo, cuando se configura con éxito seguro

<configuration> 
    <includes> 
    <include>**/*UnitTest.java</include> 
    </includes> 
</configuration> 

puedo añadir otra prueba con -Dtest parámetro, pero no puedo agregar grupo. En cualquier combinación, puedo restringir las pruebas para ser ejecutadas con grupos, pero no expandirlas.

¿Qué pasa con mi configuración? ¿Hay alguna manera de ejecutar una única prueba o grupo fuera de los definidos en pom.xml?

intentado en Ubuntu 10.04 con Maven 2.2.1, 5.14.6 TestNG y de éxito seguro 2.7.1

+1

nunca han tenido este problema antes. revisa que versión de surefire tu uso está actualizada. Aparte de eso, suelo ejecutar mis pruebas individuales como: mvn test -Dtest = ClassName (cambiar los parámetros). pero no creo que eso haga la diferencia – Steven

Respuesta

3

Como he explicado en la pregunta, cualquier mención de grupos en pom.xml o en la línea de comandos resultó en la reducción del recuento de pruebas ejecutadas.Única forma que he conseguido evitar esto es mediante el uso de perfiles Mavens como esto:

<profiles> 
    <profile> 
     <id>test-slow</id> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <configuration> 
         <groups>slow</groups> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

y luego la ejecución de pruebas con

mvn -P test-slow test 
10

No he probado con TestNG 5.12.1, pero puedo decir que la ejecución de una sola prueba utilizando el parámetro testy pruebas de grupos utilizando el parámetro groups trabaja con TestNG 5.14.2 (y segura 2.6) (groups no funciona en TestNG 5,14)

Aquí es el pom.xml que estoy usando:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.stackoverflow</groupId> 
    <artifactId>Q4159948</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <name>Q4159948</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
    <maven.compiler.source>1.6</maven.compiler.source> 
    <maven.compiler.target>1.6</maven.compiler.target> 
    </properties> 
    <dependencies> 
    <dependency> 
     <groupId>org.testng</groupId> 
     <artifactId>testng</artifactId> 
     <version>5.14.2</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.6</version> 
     <configuration/> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Con un simple AppTest de la siguiente manera:

import org.testng.annotations.*; 

public class AppTest { 

@BeforeClass 
public void setUp() { 
    // code that will be invoked when this test is instantiated 
} 

@Test(groups = { "fast" }) 
public void aFastTest() { 
    System.out.println("Fast test"); 
} 

@Test(groups = { "slow" }) 
public void aSlowTest() { 
    System.out.println("Slow test"); 
} 

} 

Tanto

$ mvn test -Dtest=AppTest 

y

$ mvn test -Dgroups=slow 

producir el resultado esperado.

0

sugeriría a intentar algo así como

mvn test -Dincludes=rs/magrathea/TestClassName 

aunque no he probado esto por mí mismo.

0

Con el fin de ejecutar una sola prueba que necesita el siguiente from official documentation

mvn -Dtest = MyFirstTest prueba

o

mvn -Dtest = MyFirstTest, MySecondTest prueba

Esto se prueba (y de trabajo) en Maven 3.

A continuación, puede evitar el uso de los perfiles. Tuve el mismo problema que tenía que ejecutar la prueba de carga de forma aislada y usar Profiler en paralelo para obtener las cifras reales.

Nota: No sé por qué, pero asegúrese de que los interruptores vienen antes de la fase decir "-Dtest = MyFirstTest" antes de "prueba" de lo contrario no está funcionando (Mac OS X)

Cuestiones relacionadas