Android Gradle plugin 3.2.0からjacocoでJavaファイルのカバレッジが取れない問題の修正
通常はKotlinだけで書くと思うので関係ないです。Java -> Kotlin移行中のプロジェクトだと起きる。
↓以前の記事
原因
Product Falvorを free
としたとき、Javaのクラスファイルの出力先がAndroid Gradle plugin 3.2.0で ${buildDir}/intermediates/classes/free/debug/
から ${buildDir}/intermediates/javac/freeDebug/compileFreeDebugJavaWithJavac/classes/
に変わった。
修正
あとGradleのアップデートでパスの指定がdeprecatedになったのでそれも修正
task jacocoTestReport(type: JacocoReport, dependsOn: ['testFreeDebugUnitTest']) { group = "Reporting" description = "Generate Jacoco coverage reports after running tests." reports { xml.enabled true html.enabled true csv.enabled false xml.destination new File("${buildDir}/reports/jacoco/jacocoTestReport.xml") html.destination new File("${buildDir}/reports/jacoco/html") classDirectories.setFrom( files( fileTree( dir: "${buildDir}/intermediates/javac/freeDebug/compileFreeDebugJavaWithJavac/classes/", exclude: coverageExcludeFiles ) + fileTree( dir: "$buildDir/tmp/kotlin-classes/freeDebug", excludes: coverageExcludeFiles ) ) ) } sourceDirectories.setFrom(files(coverageSourceDirs)) executionData.setFrom(new File("${buildDir}/jacoco/testFreeDebugUnitTest.exec")) doLast { println "jacoco xml report has been generated to file://${buildDir}/reports/jacoco/jacocoTestReport.xml" println "jacoco html report has been generated to file://${reports.html.destination}/index.html" } }