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

Chr*_*jer 9 java code-coverage intellij-idea test-coverage

在一个项目中,我有一个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) {...}
}
Run Code Online (Sandbox Code Playgroud)

类是在它所包含的意义上的实用工具类唯一static方法.因此它被声明final并且它的构造函数是private.创建实例或派生子类根本没有任何意义.

我有一套测试项目的单元测试.我正在使用IntelliJ IDEA来运行测试,测量和可视化代码覆盖率.实用程序的构造函数class Util现在降低了覆盖率.我希望看到100%的100%逻辑覆盖率.像Utility类的私有构造函数这样的代码会降低覆盖率.

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

我知道,一般来说,覆盖率报告中的隐藏代码对您自己不利.我不介意报告是否会有一个"被忽略的项目"列表 - 实际上,这将是好的,检查是否有人忽略了不应忽略的东西.关键在于覆盖范围没有意义的代码,就像Utility类的私有构造函数一样.

我试图找到是否annotations.jar包含候选人.唯一一个看起来就像它可以做到的那样的注释是TestOnly,但它不能实现这个目的.我也偷看了,plugins/coverage/lib/*.jar找不到候选人,但也许我只是错过了?

Pet*_*rey 9

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

public enum Util { ;
Run Code Online (Sandbox Code Playgroud)

enumfinalprivate默认的构造函数.

  • 与此同时,JetBrains甚至实施了"Utility class should a enum"作为检查.他们有多好 :) (4认同)