使用gradle中的jacoco显示测试覆盖率

时间:2014-11-21 03:26:06

标签: unit-testing gradle jacoco

我正在使用gradle文件来构建我的项目。在这个文件中,我使用jacoco来生成测试报告。我想要做的是修改构建文件,以便在我的测试覆盖率不是100%时显示一条消息。或者至少只显示测试覆盖率。这可能吗?

这是我的build.gradle:

apply plugin: 'java'
apply plugin: 'jacoco'

sourceSets.main.java.srcDirs = ['src']
sourceSets.test.java.srcDirs = ['test']

dependencies {
    testCompile group: 'junit', name: 'junit', version: "4.+"
}

repositories {
    mavenCentral()
}

jacocoTestReport {
    doFirst {
      classDirectories = files('build/classes/main/draw')
    }
    reports {
        xml.enabled false
        csv.enabled false
        html.destination "build/reports/coverageHtml"
    }
}

task(runui, dependsOn: jar, type: JavaExec) {

    main = 'gui.Main'
    classpath = sourceSets.main.runtimeClasspath
}

defaultTasks 'clean', 'test', 'jacocoTestReport', 'runui'

3 个答案:

答案 0 :(得分:3)

有一个非常简单的Gradle插件,名为gradle-jacoco-log,它仅记录Jacoco覆盖率数据:

plugins {
    id 'org.barfuin.gradle.jacocolog' version '1.0.1'
}

然后在./gradlew jacocoTestReport之后,显示:

Test Coverage:
    - Class Coverage: 100%
    - Method Coverage: 100%
    - Branch Coverage: 81.2%
    - Line Coverage: 97.8%
    - Instruction Coverage: 95.3%
    - Complexity Coverage: 90.2%

还有一些选项可以自定义记录的内容。

这些天来enforcing a certain test coverage的另一个主题已由Gradle涵盖。
全面披露:我是这个小插件的作者。

答案 1 :(得分:2)

目前gradle jacoco插件不支持此功能。您可以在https://issues.gradle.org/browse/GRADLE-2783https://issues.gradle.org/browse/GRADLE-2854投票支持此问题。作为一种解决方法,您可以在自定义任务中解析输出文件。

答案 2 :(得分:0)

您可以使用Gradle插件gradle-console-reporter向控制台报告各种摘要。支持JUnit,JaCoCo和Cobertura报告。