【问题标题】:How to give test coverage for private constructor of a final class in sonarqube?如何为 sonarqube 中最终类的私有构造函数提供测试覆盖率?
【发布时间】:2018-07-08 21:20:34
【问题描述】:

我有一个最终的 util 类,我添加了一个私有构造函数来隐藏默认的公共构造函数。如何使用 jacoco 覆盖率报告在 sonarqube 中获取此类的覆盖率并在 Jenkins 中构建?

public final class Util {

      // My contructor
      private Util() {
          super();
     }
 }

【问题讨论】:

  • 你为什么使用super?没有超类。
  • 我只是将这段代码添加为示例。

标签: java jenkins sonarqube jacoco


【解决方案1】:

如果您将声纳配置为使用 cobertura(而不是 jacoco)进行代码覆盖,您可以简单地 exclude that method from code coverage

这似乎比writing an artifical test case using reflection 容易。

【讨论】:

    【解决方案2】:

    根据JaCoCo changelog,从 JaCoCo 版本 0.8.0 开始,这些私有的空无参数构造函数会被自动过滤掉。变更日志还指出:

    直接读取 exec 文件并为此嵌入 JaCoCo 的工具(例如 SonarQube 或 Jenkins)只有在更新到该版本的 JaCoCo 后才会提供过滤功能。

    Announcement of release of JaCoCo version 0.8.0 状态:

    直接读取 exec 文件(不是最终报告)并嵌入 JaCoCo 以生成报告的工具只有在更新到此版本的 JaCoCo 后才会提供过滤功能。 所以请关注/等待/等各个供应商,例如

    由我们作为 JaCoCo 项目的一部分开发的相应版本 (0.8.0) 集成生成的报告(Ant 任务、Maven 插件和命令行界面)提供过滤功能。

    截至今天(2018 年 1 月 30 日):

    【讨论】:

      猜你喜欢
      • 2011-05-30
      • 2022-07-01
      • 2015-03-13
      • 2017-12-21
      • 2021-05-09
      • 2016-09-13
      • 2021-07-09
      • 2014-05-04
      • 1970-01-01
      相关资源
      最近更新 更多