2010-11-11 60 views
10

我想從運行使用Maven和TestNG運行單個測試類或組神火和TestNG

事情命令行單一的測試類不工作:

mvn -Dtest=ClassName test 

我已經定義的組pom.xml,而這個類不在其中的一個組中。所以它被排除在這些理由之外。

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

當配置爲

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

參數中沒有在pom.xml中定義的組正常工作。

類似地,當萬無一失與

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

配置我可以添加其他測試與-Dtest參數,但不能添加組。在任何組合中,我都可以縮小要用組執行的測試,但不能擴展它們。

我的配置有什麼問題?有沒有辦法在pom.xml中定義的測試或組之外運行單個測試或組?

試圖在Ubuntu 10.04使用Maven 2.2.1,TestNG的5.14.6和神火2.7.1

+1

之前從未有過這個問題。檢查您使用的是最新的surefire版本。除此之外,我通常運行我的單個測試,如:mvn test -Dtest = ClassName(交換參數)。但我不認爲這應該有所作爲 – Steven 2010-11-12 00:18:09

回答

3

正如我已經解釋過的那樣,在pom.xml或命令行中提到任何組都會導致減少執行的測試計數。只有我已經成功地避免這種情況的方法是使用內行配置文件是這樣的:

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

,然後用

mvn -P test-slow test 
10

我沒有使用TestNG測試5.12.1,但我可以說,使用test參數運行一個測試從使用groups參數組測試使用TestNG 5.14.2(和神火2.6)的作品(groups TestNG中的5.14不起作用)

這裏是我使用的pom.xml

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

用一個簡單的AppTest如下:

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

} 

兩個

$ mvn test -Dtest=AppTest 

$ mvn test -Dgroups=slow 

產生預期的結果。

0

我會建議嘗試像

mvn test -Dincludes=rs/magrathea/TestClassName 

東西雖然我沒有這個測試自己。

0

爲了運行需要一個單一的測試運行測試以下from official documentation

MVN -Dtest = MyFirstTest測試

MVN -Dtest = MyFirstTest,MySecondTest測試

這被測試(和工作)上行家3.

然後,可以避免使用的配置文件。我遇到了同樣的問題,因爲我需要單獨運行負載測試並使用Profiler並行獲取真實數據。

注:不知道爲什麼,但要確保開關「測試」前的階段,即「-Dtest = MyFirstTest」來之前,否則它不工作(Mac OSX版)