如何解决JaCoCo gradle插件忽略版本
版本版本:6.1.1
Android Gradle插件:4.0.0
当尝试运行我的jacoco coverage时,似乎没有考虑版本。当我查看HTML报告时,尽管我的设置中包含toolVersion = "0.8.5"
,但它显示“使用JaCoCo 0.7.9.201702052155创建”。该报告还没有我期望在0.8.3中与Kotlin有关的修复,这是次要的确认,这是行不通的。
apply plugin: 'jacoco'
jacoco {
toolVersion = "0.8.5"
reportsDir = file("$buildDir/reports")
}
tasks.withType(Test) {
jacoco.includeNoLocationClasses = true
jacoco.excludes = ['jdk.internal.*']
}
project.afterEvaluate {
(android.hasProperty('applicationVariants')
? android.'applicationVariants'
: android.'libraryVariants').all { variant ->
def variantName = variant.name
def unitTestTask = "test${variantName.capitalize()}UnitTest"
def uiTestCoverageTask = "create${variantName.capitalize()}CoverageReport"
tasks.create(name: "${unitTestTask}Coverage",type: JacocoReport,dependsOn: [
"$unitTestTask","$uiTestCoverageTask"
]) {
group = "Reporting"
description = "Generate Jacoco coverage reports for the ${variantName.capitalize()} build"
reports {
html.enabled = true
xml.enabled = true
csv.enabled = false
}
def fileFilter = [
'**/R.class','**/R$*.class','**/BuildConfig.*','**/Manifest*.*','**/*Test*.*','**/com/example/databinding/*','**/com/example/generated/callback/*','**/android/databinding/*','**/androidx/databinding/*','**/di/module/*','**/*MapperImpl*.*','**/*$ViewInjector*.*','**/*$ViewBinder*.*','**/*Component*.*','**/*BR*.*','**/*$Lambda$*.*','**/*Companion*.*','**/*Module.*','**/*Dagger*.*','**/*MembersInjector*.*','**/*_Factory*.*','**/*_Provide*Factory*.*','**/*Extensions*.*','**/*$Result.*',/* filtering `sealed` and `data` classes */
'**/*$Result$*.*'/* filtering `sealed` and `data` classes */
]
classDirectories.setFrom(files([
filetree(dir: "${buildDir}/tmp/kotlin-classes/${variantName}",excludes: fileFilter)
]))
def coverageSourceDirs = [
"$project.rootDir/app/src/main/java","$project.projectDir/src/${variantName}/java"
]
additionalSourceDirs.setFrom(files(coverageSourceDirs))
sourceDirectories.setFrom(files(coverageSourceDirs))
def uiTestsData = filetree(dir: "${buildDir}/outputs/code_coverage/${variantName}AndroidTest/connected/",includes: ["**/*.ec"])
executionData(files([
"$project.buildDir/jacoco/${unitTestTask}.exec",uiTestsData
]))
}
}
}
解决方法
将此添加到我的 Project Gradle 文件中帮助我解决了这个问题。好像是JVM&Kotlin的问题
subprojects {
configurations.all {
resolutionStrategy {
eachDependency { details ->
if ('org.jacoco' == details.requested.group) {
details.useVersion "0.8.6"
}
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。