2010-11-13 38 views
182

我有一個包含多個模塊的項目。當所有測試通過時,Maven測試運行它們。使Maven運行所有測試,即使有些失敗

當第一個模塊中的測試失敗時,maven將不會繼續下一個項目。我在Surefire設置中將testFailureIgnore設置爲true,但它無濟於事。

如何讓maven運行所有測試?

+0

什麼版本? – 2010-11-13 21:50:27

+0

@Pascal - SureFire 2.5 – ripper234 2010-11-14 06:59:32

回答

81

我剛剛找到了「-fae」參數,這會導致Maven運行所有測試並且不會在發生故障時停止。

+2

不幸的是,當我將它傳遞給TeamCity時,此參數不起作用。 – ripper234 2010-11-13 21:25:09

+0

在多模塊項目中,依賴於測試失敗的模塊的模塊將被跳過。改用-fn。 – hipokito 2018-03-09 07:17:41

65

您可以使用surefire 2.6進行測試,並且可以使用testFailureIgnore=true配置surefire。或者在命令行上:

mvn install -Dmaven.test.failure.ignore=true 
+11

IIRC這樣做的結果是整個構建沒有失敗,而不是運行所有測試並最終失敗。 – 2011-11-03 18:23:21

+0

這是唯一適用於我的選項......「-fae」選項對測試失敗沒有任何作用 – Yoi 2017-03-17 15:58:02

29

嘗試添加下面的配置萬無一失插件,在根項目的pom.xml中:

<project> 
    [...] 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
      <testFailureIgnore>true</testFailureIgnore> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    [...] 
</project> 
252

從文檔:

-fae,--fail-at-end之後只會失敗;允許所有非影響構建繼續

-fn--fail-never永遠不會失敗的構建,無論項目結果

所以,如果你比你使用-fae安全測試一個模塊。

否則,如果您有多個模塊,並且如果您希望所有這些模塊都經過測試(即使依賴於失敗的測試模塊),您應該運行mvn clean install -fn
-fae將繼續使用失敗測試的模塊(將運行所有其他測試),但所有依賴它的模塊將被跳過。

+1

另外,您可以爲cmd添加-e以提供一些錯誤信息。 – despot 2012-09-27 08:03:36

12

一個快速的回答:

mvn -fn test 

工程與嵌套生成項目。

-5

您可以嘗試使用Maven的故障安全插件Maven的萬無一失,插件

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <executions> 
     <execution> 
      <configuration> 
      ........ 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+4

[Maven Failsafe插件](https://maven.apache.org/surefire/maven-failsafe-plugin/)是一個非常類似於Surefire的插件,但是用於運行集成測試。如果測試失敗,它將繼續工作,但它在生命週期中處於不同的位置。 – CoverosGene 2015-07-30 14:22:59

相關問題