Lisandro Di Meo
04/21/2023, 1:53 PMtask jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugUnitTestCoverageReport']) {
reports {
xml.enabled true
html.enabled true
}
// TODO: It's ignoring the file filter?
def fileFilter = [
// ...
**/theme/**
]
def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main/java"
println("Main SRC is:" + mainSrc)
sourceDirectories.setFrom(files([mainSrc]))
classDirectories.setFrom(files([debugTree]))
executionData.setFrom(fileTree(dir: "$buildDir", includes: [
"jacoco/testDebugUnitTest.exec",
"outputs/code-coverage/connected/*<http://coverage.ec|coverage.ec>"
]))
}
Lisandro Di Meo
04/27/2023, 5:34 PMapply plugin: 'jacoco'
jacoco {
toolVersion '0.8.7'
}
tasks.withType(Test) {
jacoco.includeNoLocationClasses = true
}
configurations.all{
resolutionStrategy {
eachDependency { details ->
if ('org.jacoco' == details.requested.group) {
details.useVersion "0.8.7"
}
}
}
}
project.afterEvaluate {
tasks.create(name: "debugCoverage", type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugUnitTestCoverageReport']) {
group = "Reporting"
description = "Generate Jacoco coverage reports for the debug build."
reports {
html.enabled = true
xml.enabled = true
}
def excludes = [
...
]
def jClasses = "${project.buildDir}/intermediates/javac/debug/classes"
def kClasses = "${project.buildDir}/tmp/kotlin-classes/debug"
def javaClasses = fileTree(dir: jClasses, excludes: excludes)
def kotlinClasses = fileTree(dir: kClasses, excludes: excludes)
classDirectories.from = files([javaClasses, kotlinClasses])
def sourceDirs = ["${project.projectDir}/src/main/java", "${project.projectDir}/src/main/kotlin",
"${project.projectDir}/src/debug/java", "${project.projectDir}/src/debug/kotlin"]
sourceDirectories.from = files(sourceDirs)
println("Running at : ${project.buildDir}")
executionData.from = files(["${project.buildDir}/outputs/unit_test_code_coverage/debugUnitTest/testDebugUnitTest.exec"])
}
}