2017-02-25 257 views
1

我試圖讓jacoco爲我的android測試項目創建一個代碼覆蓋率報告。android jacoco覆蓋顯示0%與gradle但是有95%的測試覆蓋代碼

搖籃版本classpath 'com.android.tools.build:gradle:2.0.0'

我在的build.gradle如下:

apply plugin: 'com.android.application' 
apply plugin: 'jacoco' 

jacoco { 
    toolVersion = "0.7.1.201405082137" 
} 

android { 
    buildTypes { 
     release { 
     } 
     debug { 
      testCoverageEnabled true 
     } 
    } 
} 

它顯示報告如下圖像 enter image description here

有代碼覆蓋率的近95%(當我在2015年發佈了同樣的報告,報告顯示爲95%)。自那時起,代碼和測試文件夾中沒有太多變化。因此,理想的應該顯示的覆蓋率是這樣的

enter image description here

我試圖與這兩個JDK7 & 8,但相同的結果運行報告。也嘗試改用JaCoCo的最新版本,但結果仍然相同。

任何想法爲什麼報告顯示爲0%的覆蓋率?當運行Gradle任務時,它會在androidTest文件夾中成功運行我的測試。 enter image description here

Facing same issue as mentioned in this question - This question is unanswered yet

+0

當詢問關於由您的代碼中的問題的問題,你會得到更好的答案,如果你提供的代碼的人可以用它來重現問題 - 看http://stackoverflow.com/幫助/ mcve – Godin

+0

這是回購 https://github.com/pwittchen/prefser/tree/master/library 它不必被投票回購。由於隨所有代碼庫提供的Gradle版本出現此問題 – Guna

回答

0

使用覆蓋的生成方法your project命令

./gradlew clean createDebugCoverageReport 

作品就好了:

report

,我唯一改變的 - 爲到25buildToolsVersion23.0.125.0.2,因爲這是我有的版本。

+0

您正在使用的AndroidStudio版本和Java版本是什麼? – Guna

+0

@Guna我相信,使用最新發布的版本是一個非常好的做法,這就是我所做的,截至今天:Android Studio 2.2.3,Oracle JDK 8u121,在Linux上 – Godin

+0

我在三星標籤4上運行它。是你運行它的設備? – Guna

3

我有完全相同的問題。但是使用Guna的評論(2017年2月27日),似乎問題是由於在某些三星設備上運行覆蓋測試引起的。

  • 一些較新的三星設備,當你運行的gradle Jacoco任務createDebugAndroidTestCoverageReportcreateDebugCoverageReport,它將運行單元測試,但顯示0%的覆蓋率

  • 但在谷歌Nexus 5或大部分模擬器,當你運行相同Jacoco任務,它會做工精細和顯示正確的報道。較老的三星設備也很好。

這很奇怪。

還記得確保所有的測試通過第一。這是Jacoco的另一個限制。因爲即使整個套件中有一個小測試失敗,它也不會生成測試覆蓋率報告。

參見:http://blog.wittchen.biz.pl/test-coverage-report-for-android-application

+0

'還記得確保你所有的測試都先通過'。那條線救了我。感謝您的發佈。 – anujprashar

+0

良好的老三星煩人的開發者自2009年以來。當然,它完美的Nexus 5。 – Alex