【问题标题】:How to make "sourceDirectories" public in Jacoco report generation?如何在 Jacoco 报告生成中公开“sourceDirectories”?
【发布时间】:2020-07-05 12:05:26
【问题描述】:

我关注 this 的帖子为我的项目设置 Jacoco 代码覆盖率。

但是我在编写生成报告的任务时遇到了错误。

Gradle 任务

task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) {

    reports {
        xml.enabled = true
        html.enabled = true
    }

    def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*']
    def debugTree = fileTree(dir: "$project.buildDir/intermediates/javac/debug", excludes: fileFilter)
    def mainSrc = "$project.projectDir/src/main/java"

    sourceDirectories = files([mainSrc])
    classDirectories = files([debugTree])
    executionData = fileTree(dir: project.buildDir, includes: [
            'jacoco/testDebugUnitTest.exec', 'outputs/code_coverage/debugAndroidTest/connected/**/*.ec'
    ])
}

我得到的错误是:

无法设置只读属性“sourceDirectories”的值 任务 ':app:jacocoTestReport' 类型 org.gradle.testing.jacoco.tasks.JacocoReport。

我相信下面的字段在jacoco 中是私有的。

  • 源目录
  • 类目录
  • 执行数据

我的依赖:classpath "org.jacoco:org.jacoco.core:0.8.4"

另外,我尝试更改版本但没有帮助。

【问题讨论】:

    标签: android gradle jacoco test-coverage


    【解决方案1】:

    找到答案here

    task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) {
    
        reports {
            xml.enabled = true
            html.enabled = true
        }
    
        def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*']
        def debugTree = fileTree(dir: "$project.buildDir/intermediates/javac/debug", excludes: fileFilter)
        def mainSrc = "$project.projectDir/src/main/java"
    
        sourceDirectories.from files([mainSrc])
        classDirectories.from files([debugTree])
        executionData.from fileTree(dir: project.buildDir, includes: [
                'jacoco/testDebugUnitTest.exec', 'outputs/code_coverage/debugAndroidTest/connected/**/*.ec'
        ])
    }
    

    (sourceDirectories =) in not allowed in the latest gradle version 应该使用 (sourceDirectories.from)。

    【讨论】:

      猜你喜欢
      • 2022-06-13
      • 2021-01-29
      • 2015-07-19
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 2021-12-28
      • 2018-12-18
      • 2018-09-09
      相关资源
      最近更新 更多