当我运行gradlew test jacocoTestReport时,任务jacocoTestReport运行,并且我得到了一个测试报告。
当我运行gradlew integTest jacocoTestReport时,将跳过任务jacocoTestReport。

这是我的build.gradle的相关摘录:

apply plugin: 'jacoco'

jacocoTestReport {
    group = "Reporting"
    description = "Generate Jacoco coverage reports after running tests."
    additionalSourceDirs = files(sourceSets.main.allJava.srcDirs)

    doLast {
        println 'See report at: file://' + projectDir + '/build/reports/jacoco/test/html/index.html'
    }
}


test {
    filter {
        // only run tests ending in *UnitTest
        includeTestsMatching "*UnitTest"
    }
}


task integTest(type: Test) {
    filter {
        includeTestsMatching "*IntegTest"
    }
    jacoco {
        destinationFile = file("$buildDir/jacoco/integTest.exec")
        classDumpFile = file("$buildDir/classes")
    }
}

gradle文档对我没有帮助,并且广泛的谷歌搜索也没有产生任何结果。

有什么想法可以使jacoco进行集成测试报告吗?

编辑:单元测试和集成测试位于相同的目录中,它们通过文件名加以区分,以防万一。

最佳答案

事实证明,这可行:

task integTestReport (type: JacocoReport) {

    executionData project.tasks.integTest

    sourceDirectories = project.files(project.sourceSets.test.allSource.srcDirs)
    classDirectories = project.sourceSets.test.output

    def reportDir = project.reporting.file("jacoco/integTest/html")
    reports {
        html.destination = reportDir
    }
    doLast {
        println "See report at: file://${reportDir.toURI().path}index.html"
    }
}

我希望这是有帮助的 :)

编辑:这需要在文件中比integTest任务的定义晚。
我在build.gradle的结尾处拥有整个jacoco配置。

10-07 15:31