在 Android Project 中使用 JaCoCo with Gradle



我有一个使用 Gradle 5.1.1 的安卓项目 我想使用 JaCoCo 生成有关测试代码覆盖率的 HTML 报告。我试图按照一些文章中的说明进行操作,但我的所有尝试都导致了错误。

对我有用的只是应用插件"jacoco"(之后项目成功构建)。

apply plugin: 'jacoco'

但是一旦我添加任务"jacotestReport",Gradle 就无法与文件同步,并且出现此错误。

这是我的任务:

jacocoTestReport {
reports {
html.enabled true
xml.enabled false
csv.enabled false
html.destination file("${buildDir}/jacocoHtml")
}}

这是我的错误:

ERROR: Could not find method jacocoTestReport() for arguments [build_8kqk7qvpoocfxfydulk1p4m35$_run_closure3@1aba12a5] on project ':app' of type org.gradle.api.Project.

在"build.gradle"中添加"应用插件"后,我尝试使用"gradlew clean build"。教程的作者成功添加了任务,并在终端中使用此行来获取jacoco报告:

gradlew build jacocoTestReport

以下是我用来了解如何将jacoco添加到项目的文章的链接:

https://reflectoring.io/jacoco/

https://android.jlelse.eu/get-beautiful-coverage-reports-in-your-android-projects-ce9ba281507f

所以我的问题是:有没有办法使用 Gradle 将 Jacoco 添加到 Android 项目中?我做错了什么?

可能只是一个缺少的复制粘贴,但请确保在gradle中将函数定义为任务,即:task jacoTestReport(type: JacocoReport, dependon: ['testDebugUnitTest']) {

我关注了这个博客,在我的初始项目中设置了我的 Jacoco 实例,发现它非常有帮助。 https://engineering.rallyhealth.com/android/code-coverage/testing/2018/06/04/android-code-coverage.html

plugins {
id 'jacoco'
}
buildTypes {
debug {
testCoverageEnabled true
}
}
task jacocoTestReport(type: JacocoReport,
dependsOn: ['testDebugUnitTest']) {
reports.html.enabled = true
def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*']
def mainSrc = "$project.projectDir/src/main/java"
sourceDirectories.from = files([mainSrc])
def javaTree = fileTree(dir: "$project.buildDir/intermediates/javac/debug/classes", excludes: fileFilter)
def kotlinTree = fileTree(dir: "$project.buildDir/tmp/kotlin-classes/debug", excludes: fileFilter)
classDirectories.from = files([javaTree, kotlinTree])
executionData.from = fileTree(dir: "$buildDir", includes: [
"outputs/unit_test_code_coverage/debugUnitTest/testDebugUnitTest.exec",
"outputs/code-coverage/debugAndroidTest/connected/*/coverage.ec"])

}

相关内容

  • 没有找到相关文章

最新更新