作者:262610 | 来源:互联网 | 2023-05-28 16:37
在一个项目中,我有一个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来运行测试,测量和可视化代码覆盖率.实用程序的构造函数class Util
现在降低了覆盖率.我希望看到100%的100%逻辑覆盖率.像Utility类的私有构造函数这样的代码会降低覆盖率.
是否有可能(最好通过注释)将方法或构造函数标记为与代码覆盖无关,以便从覆盖率报告中排除此类代码,从而显示100%的覆盖率?
我知道,一般来说,覆盖率报告中的隐藏代码对您自己不利.我不介意报告是否会有一个"被忽略的项目"列表 - 实际上,这将是好的,检查是否有人忽略了不应忽略的东西.关键在于覆盖范围没有意义的代码,就像Utility类的私有构造函数一样.
我试图找到是否annotations.jar
包含候选人.唯一一个看起来就像它可以做到的那样的注释是TestOnly
,但它不能实现这个目的.我也偷看了,plugins/coverage/lib/*.jar
找不到候选人,但也许我只是错过了?
1> Peter Lawrey..:
我enum
用于实用程序类,大多数覆盖工具都知道忽略它的方法.
public enum Util { ;
enum
是final
用private
默认的构造函数.
与此同时,JetBrains甚至实施了"Utility class should a enum"作为检查.他们有多好 :)