2010-11-11 24 views
10

Je veux courir la classe de test unique de la ligne de commande en utilisant Maven et TestNGExécution classe de test ou d'un groupe avec Surefire et TestNG

choses qui ne fonctionne pas:

mvn -Dtest=ClassName test 

J'ai défini des groupes dans pom.xml, et cette classe n'est pas dans l'un de ces groupes. Donc, il a été exclu pour ces motifs.

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

lorsque config est

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

paramètres fonctionnent très bien dans il n'y a pas de groupes définis dans pom.xml.

De même, lorsque surefire est configuré avec

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

je peux ajouter un autre test avec le paramètre -Dtest, mais ne peut pas ajouter un groupe. Dans n'importe quelle combinaison, je peux affiner les tests à exécuter avec les groupes, mais pas les développer.

Quel est le problème avec ma configuration? Existe-t-il un moyen d'exécuter un seul test ou groupe en dehors de ceux définis dans pom.xml?

Essayé Ubuntu 10.04 avec Maven 2.2.1, TestNG 5.14.6 et 2.7.1 Surefire

+1

n'a jamais eu ce problème auparavant. vérifiez quelle version de surefire votre utilisation est à jour. à part ça, je lance habituellement mes tests simples comme: mvn test -Dtest = ClassName (permuter les params). mais je ne pense pas que cela devrait faire la différence – Steven

Répondre

3

Comme je l'ai expliqué en question, toute mention de groupes soit dans pom.xml ou sur la ligne de commande a entraîné une réduction du nombre de tests exécutés.La seule façon que j'ai réussi à éviter cela est en utilisant des profils de Mavens comme ceci:

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

et l'exécution des tests avec

mvn -P test-slow test 
10

Je n'ai pas testé avec TestNG 5.12.1, mais je peux dire que l'exécution d'un seul test en utilisant le paramètre testet des tests de groupes à l'aide du paramètre groups fonctionne avec TestNG 5.14.2 (et 2,6 surefire) (groups ne fonctionne pas dans TestNG 5,14)

Voici le pom.xml J'utilise:

<?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> 

Avec un AppTest simple, comme suit:

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"); 
} 

} 

deux

$ mvn test -Dtest=AppTest 

et

$ mvn test -Dgroups=slow 

le résultat escompté.

0

je suggère d'essayer quelque chose comme

mvn test -Dincludes=rs/magrathea/TestClassName 

bien que je ne l'ai pas testé moi-même.

0

Afin d'exécuter un seul test dont vous avez besoin les éléments suivants from official documentation

mvn -Dtest = MyFirstTest Test

ou

mvn -Dtest = MyFirstTest, MySecondTest essai

sur Maven 3.

Ceci est testé (et de travail) Ensuite, vous pouvez éviter d'utiliser les profils. J'ai eu le même problème que nécessaire pour exécuter le test de charge de manière isolée et utiliser le profileur en parallèle pour obtenir les chiffres réels.

Note: Je ne sais pas pourquoi mais assurez-vous que les commutateurs viennent avant la phase à savoir « -Dtest = MyFirstTest » avant « test » sinon il ne fonctionne pas (Mac OSX)