在一个项目中,我有一个Utility 类,如下所示:
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 类的私有构造函数这样的代码会降低覆盖率。
是否有可能(最好通过注释)将方法或构造函数标记为与代码覆盖率无关,以便从覆盖率报告中排除此类代码,从而显示 100% 的覆盖率?
我知道,一般来说,从覆盖率报告中隐藏代码对你自己不利。我不介意报告是否会有“被忽略的项目”列表 - 实际上,这会很好,以检查是否有人忽略了不应忽略的内容。关键在于覆盖范围毫无意义的代码,例如 Utility 类的私有构造函数。
我试图找出是否annotations.jar
包含候选人。唯一看起来似乎可以做到的注释是TestOnly
,但它并没有达到这个目的。我也四处看了plugins/coverage/lib/*.jar
看,找不到候选人,但也许我只是错过了?
更新 这个问题现在已经过时了。与此同时,IntelliJ IDEA 和 Jacoco 学会了如何忽略没有调用者的私有构造函数的覆盖。我不知道有任何其他 Java 中故意无法访问的代码示例会引发从覆盖率报告中排除的对话。
更新 2 这个问题可能再次与 Java 记录类的访问器相关。