运行jacocoReport

Pav*_*tam 32 java scala gradle jacoco

我正在使用gradle 1.7和jacoco插件.我的项目使用java和scala插件

当我运行gradlew -i clean jacocoTestReport时

报告未创建,我在日志中看到

:bl:jacocoTestReport (Thread[Daemon Thread 13,5,main] - start
:bl:jacocoTestReport
Skipping task ':bl:jacocoTestReport' as task onlyIf is false.
:bl:jacocoTestReport SKIPPED
:bl:jacocoTestReport (Thread[Daemon Thread 13,5,main]) - complete
Run Code Online (Sandbox Code Playgroud)

这是什么意思?为什么不创建报告?

Pet*_*ser 32

只有覆盖数据可用时,该任务才会运行.您还可以通过运行test任务来确保这一点.

  • 请注意,包含"干净"任务也很重要.如果你之前在添加jacoco插件之前运行了'test'任务,那么虽然不会生成覆盖数据,但'test'任务会认为它是UP-TO-DATE,甚至不会生成覆盖数据添加'jacoco'后.您需要使用"干净",或对代码库进行一些更改以强制"测试"任务再次运行并生成覆盖数据.看起来OP得到了这个权利,但为了别人的利益,这就是让我难以忍受的一段时间. (5认同)

小智 30

将以下内容添加到build.gradle的顶层:

test {
 finalizedBy jacocoTestReport
}
Run Code Online (Sandbox Code Playgroud)

这意味着在测试任务结束时应运行jacocoTestReport任务.运行测试后,您将收到覆盖率分析.

  • 您能否更精确地说出要添加的位置? (2认同)
  • 基于 Android gradle 的项目中不存在 `test{}` 块 - 这会是 `unitTests.all {}` 吗? (2认同)

Sty*_*ter 11

以上都不适合我.对我有用的是以下内容

添加到我的build.gradle的顶部:

apply plugin: 'jacoco' // code coverage reports
Run Code Online (Sandbox Code Playgroud)

将以下内容添加为"任务":

// Generate code coverage reports ... run with jacoco
jacocoTestReport{
    additionalSourceDirs = files(sourceSets.main.allJava.srcDirs)
    reports {
        xml.enabled false
        csv.enabled false
        html.destination "${buildDir}/reports/jacoco/html"
    }
    executionData = files('build/jacoco/test.exec')
}
Run Code Online (Sandbox Code Playgroud)

将以下内容添加到您的gradle测试任务中:

finalizedBy jacocoTestReport
Run Code Online (Sandbox Code Playgroud)

然后我发出以下命令:

gradle run test jacoco
Run Code Online (Sandbox Code Playgroud)