2015-05-21 107 views
3

運行Gradle的Jacoco插件時,我得到了一組精選的類的零代碼覆蓋率報告。我已經確認所有測試這些類的單元測試都已成功運行。Gradle Jacoco插件報告零覆蓋範圍

有趣的是,EclEmma在Eclipse中生成正確的代碼覆蓋率結果。我已經確認兩種工具都使用相同版本的Jacoco。

我想弄清楚這兩種工具之間的區別是什麼?我需要Gradle Jacoco插件的附加配置嗎?

編輯:我的搖籃Jacoco輸出呈現「類COM執行數據/ ....不匹配」

更新:我打開test.exec文件Jacoco產生,在Eclipse中。它顯示了覆蓋率不足的類有80%的探測執行。

回答

1

這可能意味着jacoco插件在Gradle中配置不正確。 在這裏你可以找到Jacoco和gradle這個常見的錯誤的清單(感謝太昊金的明確的答案):https://stackoverflow.com/a/23965581/2166900

而且,這裏是我在過去的Android項目中使用的配置和工作對我來說:

apply plugin: 'jacoco' 

jacoco { 
    toolVersion = "0.7.2.+" 
} 

def coverageSourceDirs = [ 
     'src/main/java' 
] 

task jacocoTestReport(type:JacocoReport, dependsOn: "testDebug") { 
    group = "Reporting" 

    description = "Generate Jacoco coverage reports" 

    classDirectories = fileTree(
      dir: 'build/intermediates/classes/debug', 
      excludes: ['**/R.class', 
         '**/R$*.class', 
         '**/*$ViewInjector*.*', 
         '**/BuildConfig.*', 
         '**/Manifest*.*'] 
    ) 

    additionalSourceDirs = files(coverageSourceDirs) 
    sourceDirectories = files(coverageSourceDirs) 
    executionData = files('build/jacoco/testDebug.exec') 

    reports { 
     xml.enabled = false 
     html.enabled = true 
    } 
} 
+0

不幸的是,沒有奏效。我應該澄清這些文件確實在報告中出現;但是,它們顯示沒有代碼被擊中。 EclEmma確實顯示代碼正在被擊中。 我想知道這是否是Gradle Jacoco插件的Java 8問題。有問題的文件都使用Java 8流。 謝謝 – Eric

+0

對不起,我誤解了這個問題,我認爲沒有一個類顯示代碼覆蓋率。您確實使用了Jacoco 0.7.2或更高版本?那時他們增加了對lambda表達式的支持。以下是Jacoco的更新日誌:http://www.eclemma.org/jacoco/trunk/doc/changes.html – GoGoris

+0

是的,我們正在使用0.7.5。我們只是嘗試從lambda轉換到雙冒號,這解決了問題。最新版本的jacoco應該處理lambda,所以我不確定問題是什麼。我張貼在Gradle論壇上,所以我會看看他們說什麼。謝謝! – Eric

0

當切換到gradle包裝時,我遇到了同樣的問題,但仍然使用gradle運行jacoco。用gradle包裝器運行jacoco解決了這個問題。

This stackoverflow accepted answer幫我弄清楚我錯過了什麼。

相關問題