首页 文章

Gradle&Jacoco:获取除“test”之外的Test-type任务的jacoco报告

提问于
浏览
1

当我运行 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为我的整合测试做报告?

编辑:单元 - 和集成 - 测试在相同的目录中,它们的文件名区分,以防万一不清楚 .

1 回答

  • 1

    事实证明,这有效:

    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"
        }
    }
    

    我希望这是有帮助的 :)

    编辑:这需要在文件中稍后,而不是整个测试任务的定义 .
    我在build.gradle的末尾有整个jacoco配置 .

相关问题