首页 > 解决方案 > gradle jacoco 插件不生成 exec 文件

问题描述

我已经完成了从 gradle 3.5 到 gradle 4.6 的 gradle 迁移。迁移 exec 文件停止生成后。“/build”文件夹不包含“jacoco”文件夹。如果我使用 --debug 运行 gradle 命令,它会在日志中写入:

[org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter] 跳过任务 ':common:jacocoTestReport' 作为任务 onlyIf 为假。

这是gradle脚本的一部分:

subprojects {
apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'idea'
...
jacocoTestReport {
    reports {
        xml.enabled true
        csv.enabled false
    }
    afterEvaluate {
        classDirectories = files(classDirectories.files.collect {
            fileTree(dir: it,
                    exclude: ['**/dto/**', '**/endpoint/**','**/enpoints/**', '**/spring/**',
                              '**/servlet/**','**/handler/**', '**/jpa/**', '**/filter/**', '**/events/**', '**/dao/**',
                              '**/exception/**', '**/http/**', '**/jdbc/**', '**/bigquery/**', '**/enums/**',
                              '**/repository/**', '**/combination/**', '**/datastore/**', '**/cassandra/**',
                              '**/google/**', '**/exceptions/**', '**/logging/**', '**/JavaGeneratedContext.java', '**/Q*.java'])
        })
    }
}

test {
    enabled = !skipTests
    allJvmArgs = [
        '-Dfile.encoding=utf-8'
    ]
    useJUnit {
        excludeCategories 'com.severn.common.test.IntegrationTest'
    }
    /*jacoco {
        enabled = true
        destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
    }*/
    finalizedBy jacocoTestReport
}

...

}

标签: gradlejacoco

解决方案


确保

1) 在您的顶级 Gradle 文件 ( allprojects { ... }) 中编译期间启用您的调试信息。有关更多信息,请参见此处:Jacoco 单元和集成测试覆盖率 - 个人和整体

   tasks.withType(Compile) {
     options.debug = true
     options.compilerArgs = ["-g"]
   }

2) 尝试从任务中删除整个 Jacoco 配置test(如果在 jacocoTestReport 任务期望的默认位置生成 .exec 文件,请确保将其放置)。确保test任务正在运行(并且不会以某种方式被排除)。出于测试目的(缩小此 .exec 未创建问题的范围),您可以强制jacocoTestReport任务依赖于test任务。

tasks.withType(Test) {enabled = true}

3) 有关 Java 单级/多级项目的 Jacoco 示例,请参阅最新的 Gradle 4.6 包 (tar/zip) 以获取提示。

PS:默认 JaCoCo 版本升级到0.8.0看看在jacoco块内强制这个版本是否有帮助。

https://docs.gradle.org/4.6/release-notes.html JaCoCo 插件已升级为默认使用 JaCoCo 0.8.0 版。


推荐阅读