2010-11-11 17 views
10

chcę uruchomić jedną klasę testową z linii komend przy użyciu Maven i TestNGRunning jedną klasę lub grupę testową z Surefire i TestNG

Rzeczy, które nie działa:

mvn -Dtest=ClassName test 

Mam zdefiniowane grupy w pom.xml, a ta klasa nie należy do żadnej z tych grup. Z tego powodu został wykluczony.

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

kiedy config jest

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

Parametry działać dobrze w nie istnieją grupy zdefiniowane w pom.xml.

Podobnie, murowany jest skonfigurowany

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

można dodać kolejny test ze -Dtest parametru, jednak nie można dodać do grupy. W dowolnej kombinacji mogę zawężać testy do wykonania grupami, ale nie rozszerzać ich.

Co jest nie tak z moją konfiguracją? Czy istnieje sposób na uruchomienie pojedynczego testu lub grupy poza tymi zdefiniowanymi w pom.xml?

Próbowałem na Ubuntu 10.04 z Maven 2.2.1, 5.14.6 i TestNG Murowany 2.7.1

+1

nigdy nie miał ten problem wcześniej. sprawdź, jaka wersja surefire, którego używasz, jest aktualna. poza tym zwykle uruchamiam moje pojedyncze testy, takie jak: test mvn -Destest = ClassName (zamień parametry). ale nie sądzę, że powinno to coś zmienić – Steven

Odpowiedz

3

Jak już wyjaśniłem, każda wzmianka o grupach w pom.xml lub w wierszu poleceń spowodowała zmniejszenie liczby wykonanych testów.Tylko w ten sposób udało mi się tego uniknąć jest za pomocą profili Mavens tak:

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

a następnie uruchomić testy z

mvn -P test-slow test 
10

nie testowałem z TestNG 5.12.1, ale mogę powiedzieć, że działa jeden test za pomocą parametru testi testy z grup, stosując parametr groups współpracuje z TestNG 5.14.2 (2.6) oraz murowany (groups nie działa w TestNG 5.14)

Oto pom.xml Używam:

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

pomocą prostego AppTest następujące:

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

} 

Zarówno

$ mvn test -Dtest=AppTest 

i

$ mvn test -Dgroups=slow 

uzyskać oczekiwane wyniki.

0

Proponuję spróbować czegoś jak

mvn test -Dincludes=rs/magrathea/TestClassName 

chociaż nie testowałem ten sam.

0

w celu uruchomienia pojedynczego testu niezbędne są from official documentation

mvn -Dtest = MyFirstTest Test

lub

mvn -Dtest = MyFirstTest, MySecondTest Test

ten jest testowany (i pracy) na Maven 3.

Następnie można uniknąć stosując profile. Miałem ten sam problem, ponieważ musiałem uruchomić test obciążenia w izolacji i używać profilera równolegle, aby uzyskać prawdziwe liczby.

Uwaga: Nie wiem, dlaczego, ale upewnij się, że przełączniki są przed fazą czyli „-Dtest = MyFirstTest” przed „test” inaczej nie działa (Mac OSX)