2014-01-30 28 views
4

看起來,surefire和failsafe插件按順序執行測試類,而在類中定義的測試以不確定的順序執行。可以肯定的是,故障安全插件故意隨機化測試類的執行順序嗎?

要發現依賴於訂單的測試(我們認爲是不好的測試),我們希望強制訂單對於每次運行都是不同的。理想情況下,我們有一種機制來禁用隨機化或重複順序的種子編號(必須像舊的Palm OS模擬器具有驅動一系列隨機測試的種子編號)。

讓我知道如果你知道一種方法來做到這一點?如果不是的話,我想我可以將一個工作分解成一個本地分支,然後提交它。

感謝

彼得

回答

4

一些其他的答案鏈接到萬無一失Maven的文檔頁面,但最喜歡的行家文檔它沒有提供如何實際指定實例Maven XML morass中的設置。下面是如何用surefire插件做到的:

<properties> 
    <surefire.plugin.version>2.16</surefire.plugin.version> 
</properties> 

<build> 
<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>${surefire.plugin.version}</version> 
    <configuration> 
     <runOrder>random</runOrder> 
    </configuration> 
    </plugin> 
</plugins> 
</build> 
0

首先,我認爲你是混合的東西。 Maven-Surefire-PLugin負責運行單元測試,在這種情況下,獨立於執行順序。 Maven-Failsafe-plugin負責執行不同的集成測試,因此集成測試可能取決於沒有問題的順序。除此之外,Maven的萬無一失,插件具有一定的可能性influcence執行順序的順序:

http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#runOrder

這當然會通過您所使用的測試框架的影響的。在JUnit中,只能以有限的方式影響訂單。在TestNG中它是一個完全不同的故事,因爲TestNG能夠定義依賴關係等。

Maven-Failsafe-Plugin具有相同的功能來影響執行順序。

http://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html#runOrder