2011-10-17 110 views
6

我有一個JUnit 4測試套件,包含他們需要運行的順序號測試類的Maven中運行JUnit4測試套件(我們的集成測試需要在中運行一定的順序)。使用maven-故障保護,插件

如果我使用maven-故障保護,插件無需任何配置就運行測試,但不正確的順序。但是,如果我設置插件運行測試套件,則不會運行測試。

是否有可能使用故障安全插件來運行測試套件?如果是這樣,我哪裏出錯了!

的代碼如下:

@RunWith(Suite.class) 
@SuiteClasses({ 
    TestCase1.class, 
    TestCase2.class, 
     ... 
    TestCaseN.class, 
}) 
public class IntegrationSuite { 
    //Do Nothing. 
} 

,並從pom.xml中:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.9</version> 
    <configuration> 
     <includes> 
      <include>IntegrationSuite.java</include> 
     </includes> 
    </configuration> 
    <executions> 
     <execution> 
      <id>integration-test</id> 
      <goals> 
       <goal>integration-test</goal> 
      </goals> 
    </execution> 
    <execution> 
     <id>verify</id> 
     <goals> 
      <goal>verify</goal> 
     </goals> 
    </execution> 
</executions> 
</plugin> 

謝謝:)

回答

10

故障安全插件支持自2.7版本(相當最近)runOrder (click)參數。沒有多少選項,您不能明確指定順序,但可以將其設置爲「按字母順序排列」,並重命名測試類以反映運行順序。 (測試)代碼氣味;或者,這不是一件好事,因爲當它的複雜性高於人類理解時,它是一個開發不可維護的測試集並最終放棄它的短路徑。另外它可能無法公開錯誤,因爲它是一個選擇的執行路徑的結果。

BTW,我更喜歡有這樣的測試中,帶有雙重星:

<includes> 
    <include>**/IntegrationSuite.java</include> 
</includes> 
+0

謝謝您的回答!本身不依賴對方來運行測試,但是其運行秩序已被寫入詳細的測試文檔... 不是我決定的決定,但我仍然有實現它! –

+0

現在@HeavyMetalKid,我認爲它的基礎上,如何神火/故障查找測試案例,套房可能不支持。不過,我不能給出一個確鑿的證據。 – MaDa

+0

從我閱讀的內容中尋找對此的回答,我想你可能是對的。我要嘗試一下你的runOrder +字母命名的想法。謝謝 –

0

Maven的萬無一失,插件也可以用如下代碼:

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-surefire-plugin</artifactId> 
<version>2.12.4</version> 
<configuration> 
<includes> 
<include>**/IntegrationSuite.java</include> 
</includes> 
</configuration> 
</plugin>