2015-02-09 98 views
0

我有一個項目使用jacoco版本0.7.1.201405082137和maven 3.0.5。在項目中,我有一些單元測試,還有一些使用arquillian創建的測試。使用jacoco和maven獲取錯誤的覆蓋率數據

爲了區分單元測試和集成測試,我創建了兩個junit類:一個叫做FastTest,另一個叫SlowTest。

在,我用它來運行所有測試Maven的配置文件我已經完成了這個插件:

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.17</version> 
    <configuration> 
    <groups>SlowTest,FastTest</groups> 
    <systemPropertyVariables> 
     <arquillian.launch>wildfly_8_x</arquillian.launch> 
    </systemPropertyVariables> 
    </configuration> 
</plugin> 
<plugin> 
    <groupId>org.jacoco</groupId> 
    <artifactId>jacoco-maven-plugin</artifactId> 
    <version>${version.jacoco}</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>prepare-agent</goal> 
      </goals> 
    </execution> 
    <execution> 
     <id>report</id> 
     <phase>prepare-package</phase> 
     <goals> 
     <goal>report</goal> 
     </goals> 
    </execution> 
</executions> 

當我離開這兩個類別中我只得到了覆蓋與SlowTest註釋的測試。但所有的測試運行。如果我只運行用FastTest註釋的那些,我也會得到它們的正確覆蓋率。

如何在運行兩種測試時設置jacoco以獲得正確的覆蓋範圍?

回答

0

小提示:

  • <groups>標籤充分的類名。所以我的問題是:將SlowTest.class接口放置在默認包中?如果沒有,你應該提供完整的路徑,某事像:<groups>com.mycompany.project.SlowTest</groups>

和小建議:

  • 良好做法是區分單元測試和集成測試 - 從而分開運行。 Maven通過兩個插件實現了這一點:maven-surefire-pluginmaven-failsafe-plugin
    首先設計用於運行mvn test的單元測試。
    其次是設計用於運行您的集成測試mvn failsafe:integration-test
    answer可能是有用的,以擺脫一些光。
+0

是的,中的類有完整的包。我嘗試了故障安全插件,但沒有什麼區別。我的單元測試使用powermock,我相信這是問題,因爲powermock必須更改類。 – 2015-02-10 09:34:12

+0

@KellyGoedert事實上,它可能是。就我個人而言,我發現'PowerMock'總是會造成比它更值錢的麻煩。真。它的黑客,像改變一個類加載器可能是非常有問題的。這只是冰山的一個頂峯。 – 2015-02-10 09:42:24

+0

我同意你的意見。可悲的是,對於我來說,我無法改變讓我使用Powermock進行測試的類。 – 2015-02-10 09:45:27

相關問題