测试期间gradle skip jacoco

时间:2017-02-28 06:39:41

标签: gradle jacoco

我有一个问题,其中测试任务间歇性地失败(我怀疑是因为jacoco在测试期间触发[生成报告])。

有没有办法在测试期间禁用jacoco的运行?我可以创建一个新任务,仅用于生成覆盖率报告(我想知道如何做到这一点)。在运行测试任务时,我很多时候并不需要测试覆盖率报告。

2 个答案:

答案 0 :(得分:4)

我发现如果你执行apply插件,那么即使你已经完成了接受答案中所述的dependsOn.remove,jacoco工具也会发生。即使未创建jacoco报告本身,也可以创建名为build / jacoco / test.exec的文件,从而判断检测仍在进行。

我不得不将jacoco插件应用于单独的.gradle文件,并有条件地将其包括在内:

if (jacocoEnabled.toBoolean() )  {
  project.logger.lifecycle('applying jacoco build file')
  apply from: "jacoco.gradle"
}

然后我的jacoco.gradle文件看起来像:

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


test {
  jacoco {
    append = false
    destinationFile = file("$buildDir/jacoco/test.exec")
  }
}

  jacocoTestReport {
      reports {
          xml.enabled true
          xml.destination file("${buildDir}${jacocoXMLDestination}")
      }
  }

  test.finalizedBy jacocoTestReport

这使我的构建时间从4分钟缩短到3分钟 - 节省了一些费用。

答案 1 :(得分:2)

如果它确实在Jenkins上运行,则错误137可能是内存不足问题。

如果它在Jenkins上运行,请尝试扩展内存并检查此链接。

I'm getting OutOfMemoryError

Jacoco任务:

jacocoTestReport    -   JacocoReport    Generates code coverage report for the test task.
jacocoTestCoverageVerification  -   JacocoCoverageVerification  Verifies code coverage metrics based on specified rules for the test task.

找出哪些任务具有哪些依赖关系

gradle tasks --all

要使用cmd排除任务,您可以

gradle test -x taskToExclude

以编程方式,您可以使用任务图将其排除

gradle.taskGraph.useFilter { task -> yourstuff}

或者只是将其从测试任务依赖项中删除

test.dependsOn.remove("jacocoTestReport")
test.dependsOn.remove("jacocoTestCoverageVerification")

值得检查的额外资源: https://docs.gradle.org/current/userguide/jacoco_plugin.html