關於Android studio中代碼覆蓋率

  目前Android studio中gradle已集成jacoco,默認無需手動加入jacoco插件便可生成報告。這裏將添加jacoco插件的方法步驟寫下,純粹供學習以更瞭解gradle。
 
一,gradle默認方式(無需手動添加jacoco插件):
 
1,android studio新建項目時,會自動生成androidTest文件夾,同時文件夾下生成ApplicationTest。咱們先在ApplicationTest裏添加一些測試代碼:
 
2,Gradle默認支持生成代碼覆蓋率報告,咱們須要作的只是在buil.gradle中設置testCoverageEnabled爲true:
 
3,而後打開cmd,進入項目文件夾根目錄下,執行命令:gradle clean createDebugCoverageReport
 
等待片刻,出現success
 
 
4,此時在項目文件夾的\app\build\reports\coverage\debug的目錄下就能看到代碼覆蓋率的報告,打開index.html就能看到詳細報告了:
 
二,手動添加jacoco插件生成
 
1,同上第一步,在ApplicationTest裏添加一些測試代碼;
 
2,build.gradle配置要複雜點:
 
添加classpath
 
添加jacoco插件
 
設置testCoverageEnabled爲true
 
添加如下信息
 
添加額外task
//jacocoTestReport依賴於connectedAndroidTest task,因此在執行jacoco以前須要先執行connectedAndroidTest,也就是說須要鏈接測試機(模擬器or真機)
task jacocoTestReport(type:JacocoReport,dependsOn:"connectedAndroidTest"){
group = "Reporting"
description = "Generate Jacoco coverage reports after running tests."
reports{
xml.enabled = false
html.enabled = true
csv.enabled = false
}
classDirectories = fileTree(
dir : "$buildDir/intermediates/classes/debug",
excludes : [
'**/*Test.class',
'**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/Manifest*.*'
]
)
def coverageSourceDirs = ['src/main/java']
additionalSourceDirs = files(coverageSourceDirs)
sourceDirectories = files(coverageSourceDirs)
additionalClassDirs = files(coverageSourceDirs)
executionData = files("$buildDir/outputs/code-coverage/connected/coverage.ec")
}
 
3,而後打開cmd,進入項目文件夾根目錄下,執行命令:gradle clean jacoco
 
等待片刻,出現success
 
4,此時在項目文件夾的\app\build\reports\jacoco\jacocoTestReport\html的目錄下就能看到代碼覆蓋率的報告,打開index.html就能看到詳細報告了:
 
到此兩種方式都介紹完了,須要提的一點是,生成報告時須要打開模擬器或真機,可是使用部分真機時生成的覆蓋率爲0%,而用模擬器時正常,還不知道是什麼緣由。
相關文章
相關標籤/搜索