在一个项目中,我有一个实用程序类,如下所示:
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 { ;
enum
是 final
,默认带有 private
构造函数。
关于java - 如何从 IntelliJ IDEA 的覆盖率测量中排除源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27748952/