【问题标题】:Gradle Jacoco sources include testsGradle Jacoco 来源包括测试
【发布时间】:2018-07-09 11:30:29
【问题描述】:

我有一个多模块项目和一些 TestNG 测试,涵盖了它们。

我的 gradle 配置如下:

subprojects { subproject ->
    jacocoTestReport {
        additionalSourceDirs = files(sourceSets.main.allSource.srcDirs)
        classDirectories =  files(sourceSets.main.output)
        sourceDirectories = files(sourceSets.main.allSource.srcDirs)

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

    test {
        useTestNG()
    }

    test.finalizedBy(project.tasks.jacocoTestReport)
}

在报告中,我希望看到基于主包源代码的代码覆盖率(由 sourceSets.main 提供),但测试包中的所有 java 类也包括在内。所以覆盖结果无效。

如何修复配置?

【问题讨论】:

    标签: java gradle jacoco


    【解决方案1】:

    我所有的测试都有一个命名模式,所以我可以通过正则表达式排除它们:

    jacocoTestReport {
        additionalSourceDirs = files(sourceSets.main.allSource.srcDirs)
        classDirectories =  files(sourceSets.main.output)
        sourceDirectories = files(sourceSets.main.allSource.srcDirs)
    
        afterEvaluate {
            classDirectories = files(classDirectories.files.collect {
                fileTree(dir: it, exclude: 'path/to/test/*Test.java')
            })
        }
    
        reports {
            html.enabled = true
            xml.enabled = true
            csv.enabled = false
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 2014-06-14
      • 2019-02-17
      • 1970-01-01
      相关资源
      最近更新 更多