java - 如何从 IntelliJ IDEA 的覆盖率测量中排除源代码?

标签 java intellij-idea code-coverage test-coverage

在一个项目中,我有一个实用程序类,如下所示:

public final class Util {
    private Util() {}
    public static String method1(InputStream in) {...}
    public static String method2(BufferedReader in) {...}
    public static String method3(File file) {...}
}

该类是实用程序类,因为它仅包含 static方法。 因此声明为final它的构造器是private 。 创建实例或派生子类根本没有任何意义。

我有一套测试项目的单元测试。 我正在使用 IntelliJ IDEA 来运行测试、测量和可视化代码覆盖率。 Utility 的构造函数 class Util现在降低覆盖率。 我希望在 100% 的逻辑覆盖率上看到 100%。 Utility 类的私有(private)构造函数等代码降低了覆盖率。

是否有可能(最好是通过注释)将方法或构造函数标记为与代码覆盖率无关,以便从覆盖率报告中排除此类代码,从而显示 100% 的覆盖率?

我知道在覆盖率报告中隐藏代码通常会对您不利。我不介意报告是否会有“忽略的项目”列表——实际上,这很好,可以检查是否有人忽略了不应忽略的内容。重点实际上是关于覆盖没有意义的代码,例如 Utility 类的私有(private)构造函数。

我试图找到是否 annotations.jar包含候选人。唯一看起来甚至可以做到这一点的注释是 TestOnly。 , 但它并没有达到这个目的。 我也在 plugins/coverage/lib/*.jar 中四处张望找不到候选人,但也许我只是错过了?

更新 这个问题现在已经过时了。同时,IntelliJ IDEA 和 Jacoco 学会了如何忽略没有调用者的私有(private)构造函数的覆盖。我不知道在 Java 中有意无法访问代码的任何其他示例会引发关于从覆盖率报告中排除的对话。

更新 2 这个问题可能再次与 Java 记录类的访问器相关。

最佳答案

我将 enum 用于实用程序类,大多数覆盖工具都知道忽略它的方法。

public enum Util { ;

enumfinal,默认带有 private 构造函数。

关于java - 如何从 IntelliJ IDEA 的覆盖率测量中排除源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27748952/

相关文章:

intellij-idea - 如何让intellij想法通过回车完成插入?

Angular - View 的代码覆盖率

java - 在 PreferenceActivity 中隐藏首选项

java - ListView 中的搜索栏 JSON 解析数据错误 NullPointerException

java - 将 Tensorflow 添加到 Java Project Netbeans

java - Spring 中是否总是调用特定的 @RequestMapping 以支持变量 @RequestMapping

Tomcat/IntelliJ 断开连接

gradle - 包 ratpack.test 不存在

php - Codeception codecoverage 非常慢

python - “模块”对象在coverage.py中没有属性 'RawConfigParser'