![](/img/trans.png)
[英]Sonar Jacoco not considering Kotlin androidTest (integration test case) in coverage
[英]Combine jacoco coverage from androidTest and test
自從'com.android.tools.build:gradle:1.1.0'
發布以來,我將大部分java測試代碼從androidTest
到test
文件夾,因為JVM測試速度要快得多。 但我不能移動所有測試。 我真的需要設備測試,因為有一些ContentProvider
東西。
在開始遷移之前,我已經有100%的代碼覆蓋率。 當我正在運行jacoco代碼覆蓋時,我獲得androidTest
文件夾的40%和test
文件夾的71%。 我的代碼經過100%測試,但我沒有報告證明這一點。
有沒有辦法將兩份報告合並? 我找到了JacocoMerge,但無法讓它工作。
這是androidTest
文件夾的輸出: build/outputs/reports/coverage/debug/index.html
這里是使用此gradle任務生成的test
文件夾build/reports/jacoco/generateJacocoTestReports/html/index.html
輸出:
def coverageSourceDirs = [
'../library/src/main/java'
]
task generateJacocoTestReports(type: JacocoReport, dependsOn: "test") {
group = "Reporting"
description = 'Generate Jacoco Robolectric unit test coverage reports'
classDirectories = fileTree(
dir: '../library/build/intermediates/classes/debug',
excludes: ['**//*R.class',
'**//*R$*.class',
'***/*//*$ViewInjector*.*',
'**//*BuildConfig.*',
'**//*Manifest*.*']
)
sourceDirectories = files(coverageSourceDirs)
additionalSourceDirs = files(coverageSourceDirs)
executionData = files('../library/build/jacoco/testDebug.exec')
}
不確定你是否仍然需要這個,但我最近發布了Gradle插件,它可以幫助你: https : //github.com/paveldudka/JacocoEverywhere
還有gradle插件https://github.com/palantir/gradle-jacoco-coverage ,根據文檔也可以完成這項工作。
我沒有嘗試過一個具有兩個不同測試部件的子模塊,但它適用於將兩個子模塊的測試部件合並。
如果您將Jenkins與JaCoCo插件一起使用,您只需配置“執行文件路徑”中的所有jacoco.exec和emma.ec文件即可報告組合覆蓋率。
connectedAndroidTest默認會在“輸出”中的某處產生emma.ec文件。
JacocoMerge任務可用於合並2個或更多jacoco執行數據。
可以將以下任務添加到根gradle文件中,並且在成功執行此任務時,可以在根構建目錄下找到合並的執行數據。 ( build / jacoco / mergeJacocoReport.exec )
evaluationDependsOnChildren()
//Missing this might be a problem in fetching JacocoReport tasks from sub-modules.
task mergeJacocoReport(type: org.gradle.testing.jacoco.tasks.JacocoMerge) {
group "Jacoco Report"
description "Merge Jacoco Code Coverage Report"
def executionFiles = fileTree("$rootProject.rootDir", {
includes = ['**/*.exec']
})
setExecutionData(executionFiles)
}
subprojects.each { $project ->
def tasks = $project.tasks.withType(JacocoReport)
if (tasks != null) {
mergeJacocoReport.dependsOn << tasks
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.