Gradle Jacoco - 找不到方法 jacocoTestReport()

2022-09-02 13:42:41

我正在尝试在Gradle中生成Jacoco测试报告。当我尝试同步我的代码时,我将收到以下错误:

错误:(56, 0) 在 org.gradle.api.Project 类型的项目 ':app' 上找不到参数的方法 jacocoTestReport() [build_38ehqsoyd54r3n1gzrop303so$_run_closure4@10012308]。

我的 build.gradle 文件包含以下项目:

apply plugin: 'jacoco'

jacoco {
    toolVersion = "0.7.6.201602180812"
    reportsDir = file("$buildDir/reports/jacoco")
}

jacocoTestReport {
    group = "Reporting"
    reports {
        xml.enabled true
        csv.enabled false
        html.destination "${buildDir}/reports/coverage"
    }
}

当我查看文档时,我没有看到任何我做错的事情。

升级版本:3.3

为什么我会收到此错误,我该如何解决?


答案 1

您的问题中提到的文档所述

如果 Java 插件也应用于您的项目,则会创建一个名为 jacocoTestReport 的新任务,该任务依赖于测试任务。

什么是非常合乎逻辑的 - Java代码覆盖率的测量需要编译,执行测试等。

因此,确实使用您的示例会导致失败,并且在添加.build.gradleapply plugin: 'java'


答案 2

基本上,我知道两种方法可以实现这一目标。

第一种方法是内置的android gradle插件功能:

android { 
    ... 
    buildTypes { 
       debug { 
          testCoverageEnabled = true 
       } 
       ... 
    } 
    ... 
}

这将定义可以执行的 gradle 任务。据我所知,这在仪器测试中工作正常。更多信息:安卓系统上的代码覆盖率

第二种方法是使用此插件:

https://github.com/vanniktech/gradle-android-junit-jacoco-plugin

设置非常简单:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
         classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.6.0'
    }
}

apply plugin: 'com.vanniktech.android.junit.jacoco'

项目同步后,您将有如下任务:jacocoTestReport<Flavor><BuildType>

我们用它来测量在本地计算机上运行的单元测试的代码覆盖率。


推荐