2015-05-20 78 views
0

我正在嘗試爲我的項目設置代碼覆蓋率。我使用Wildfly 8.2服務器,gradle作爲構建工具,並使用JUnit和Arquillian進行測試。在gradle中,我配置了jacoco插件來生成代碼覆蓋。我有一個任務叫做jacocoTestReport它允許我生成一個html報告。EJB的代碼覆蓋率使用Wildfly-Arquillian-Gradle-Jacoco

趣談運行測試: 我在一個多模塊項目工作,每個子項目有,我們有兩種方法部署類 - 一個用於非創建REST類的拆封檔案和其他-REST類。在arqullian.xml中,我們將此配置爲REST_CONTAINERNON_REST_CONTAINER併爲WildFly安裝目錄提供路徑。當我們運行gradle build test時,它將通過部署REST.ear和非REST.ear來運行整個測試並生成覆蓋率報告。

問題是EJB和其他服務器管理類的代碼覆蓋率顯示爲0%(來自覆蓋率報告的主分析)。我還分析了jacoco.exec,在那裏我發現顯示0%覆蓋率的類沒有列在文件中(大部分是bean類)。

有人可以給我提供了正確的配置,其適用於組合:Wildfly-的Arquillian-搖籃 - Jacoco

注:我很確定使用比jacoco其他工具,嘗試的Cobertura但同樣的結果。

+0

嘿,代碼覆蓋率EJB的實在不行或者類似的東西?這似乎從來沒有人嘗試過。 – Tomin

+0

我的EJB獲得代碼覆蓋率很好。但是我不使用Arquillian,我認爲這是問題的根源,因爲它會導致測試類在自定義類加載器上重新加載。代碼覆蓋工具沒有看到重新加載的類(這是實際獲得行使的類),所以你得到0%的覆蓋率。 –

回答

0

這個工作對我(但我用jboss7不應該是一個問題)來源:https://developer.jboss.org/thread/241883

 

apply plugin: 'jacoco' 
jacoco {  
    toolVersion = '0.7.4.201502262128' 
    reportsDir = file("$buildDir/jacoco") 
} 

dependencies { 
testCompile 'YOUR_ARQUILLIAN_ADAPTER' 
testCompile 'org.jboss.arquillian.junit:arquillian-junit-container:1.1.5.Final' 
    testCompile 'org.jboss.arquillian.extension:arquillian-jacoco:1.0.0.Alpha7' 
} 

// Important: add the Jacoco libs on the test classpath (required for the Jacoco Arquillian extension to work). 
sourceSets { 
    test.runtimeClasspath += configurations.jacocoAnt 

}