2011-02-28 102 views
4

我已經配置在我的POM的Cobertura代碼覆蓋:的Maven的Cobertura:單元測試失敗,但成功打造

<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>cobertura-maven-plugin</artifactId> 
<version>2.4</version> 
<configuration> 
    <instrumentation> 
     <excludes> 
      <exclude>**/*Exception.class</exclude> 
     </excludes> 
    </instrumentation> 
    <formats> 
     <format>xml</format> 
     <format>html</format> 
    </formats> 
</configuration> 
</plugin> 

,並按照命令啓動測試:

mvn clean cobertura:cobertura 

但是,如果單元測試的一個Cobertura只會記錄這些信息,並不會標記構建失敗。

Tests run: 287, Failures: 1, Errors: 1, Skipped: 0 

Flushing results... 
Flushing results done 
Cobertura: Loaded information on 139 classes. 
Cobertura: Saved information on 139 classes. 
[ERROR] There are test failures. 

................................. 

[INFO] BUILD SUCCESS 

如何配置Cobertura標記生成單元測試失敗失敗?

在此先感謝。

+0

你確定你不是在一次掃描中做得太多嗎?通常的構建在單元測試失敗時停止,但覆蓋構建適用於不同的目的。我不知道你的具體情況,但你爲什麼要讓Cobertura通過測試而不是運行所有測試,並告訴你你有什麼報道? – 2013-08-15 09:15:10

回答

0

您可以將haltOnFailure屬性設置爲true。

<configuration> 
    ... 
    <check> 
     ... 
     <haltOnFailure>true</haltOnFailure> 
     ... 
    </check> 
</configuration> 
+0

謝謝你的回答,但這個配置屬性並沒有幫助我:( – 2011-02-28 17:00:39

+0

它看起來像這個選項啓用覆蓋檢查,例如,然後覆蓋項目是低 – 2011-02-28 17:03:38

3

如果從運行的Cobertura插件你不能強迫行家如果測試沒有成功通過失敗構建一個特殊的目標。插件目標將成功。

您可以將cobertura運行綁定到生命週期階段(例如測試)。這將使cobertura的目標在這個階段運行(mvn clean test),並且如果這個階段失敗,則失敗。

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>cobertura-maven-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
       <formats> 
        <format>xml</format> 
        <format>html</format> 
       </formats> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>test</phase> 
        <goals> 
         <goal>cobertura</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

該解決方案的缺點是cobertura目標將運行到每個test階段。

+0

謝謝你的答案。運行單元測試兩次,如果我使用選項_-Dmaven.test.skip = true_,maven不會運行任何測試,請您澄清一下如何解決它?我發現以下cobertura錯誤[MCOBERTURA-83](http ://jira.codehaus.org/browse/MCOBERTURA-83)。是否有其他解決方法修復測試雙啓動而無源修補? – 2011-03-01 08:01:49

+0

我不知道這是否可以修復。在這種情況下,有一個「正常」測試運行(surefire插件)和一個「入侵測試運行」(cobertura)。我懷疑這可以「合併」爲一次運行。 – FrVaBe 2011-03-01 08:37:14

+0

這是非常傷心:( – 2011-03-01 13:14:16