[英]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.