【问题标题】:Offline instrumentation using jacoco and gradle使用 jacoco 和 gradle 进行离线检测
【发布时间】:2015-04-27 13:22:52
【问题描述】:

我想进行离线检测以覆盖我的项目,因为如果没有它,对于服务器管理的事物 (EJB),它显示的覆盖率为 0%。有谁知道我们如何使用 gradle 进行离线检测?

编辑:我使用的是 Wildfly 8.2 应用服务器

【问题讨论】:

  • 您是在谈论测试覆盖率中的覆盖率吗?
  • 是的。在测试过程中,Wildfly 中部署了一些组件,服务器会在运行时修改类。所以我们不会得到它的报道

标签: java gradle code-coverage wildfly-8 jacoco


【解决方案1】:

我不使用 JaCoCo,但我使用过 Cobertura。据我所知,它们之间的主要表面区别在于 JaCoCo 执行运行时检测,而 Cobertura 执行编译时检测。如果不知道您的 JaCoCo 问题是否可以修复,但如果您需要离线或编译时检测,那么您应该使用 Cobertura。

使用 Cobertura 处理就这么简单:

plugins {
    id 'net.saliman.cobertura' version '2.2.5'
}

apply plugin: 'java'

test {
    filter {
        includeTestsMatching "*Test"
    }
}

test.dependsOn coberturaCheck

cobertura {
    coverageCheckBranchRate         = 0
    coverageCheckLineRate           = 0
    coverageCheckPackageBranchRate  = 0
    coverageCheckPackageLineRate    = 0
    coverageCheckTotalBranchRate    = 0
    coverageCheckTotalLineRate      = 0
}

【讨论】:

  • 感谢您的回复。这会解决使用 wilfly 服务器的 EJB 和组件的零覆盖率吗?这就是我面临的 jacoco 的主要问题。
  • 我按照你的建议做了。现在我在包含检测类的构建文件夹中有 Instrumented_classes 目录。但是 EJB 的代码覆盖率仍然显示为 0%(会话 bean 和在 AS 中测试期间部署的一些资源)。根据理论,我们应该使用检测类进行测试,对吗?但默认情况下,它会从 build/classes 目录中获取类进行测试。这是错误报道的原因吗?
  • 是的,您必须订购您的类路径,以便在未检测类之前到达检测类。
  • 您能帮我解决这个问题吗?我们如何在 gradle 中相应地订购类路径?
  • 您首先应该做的是在命令行中添加“--debug”。这将发出大量输出,但最终会显示用于执行测试的确切“java”命令行,包括类路径。这应该提供线索。
猜你喜欢
  • 2020-10-16
  • 2017-05-13
  • 1970-01-01
  • 2018-03-04
  • 2021-01-31
  • 2015-09-07
  • 2020-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多