如何添加静态成员变量Jacoco Test Coverage?

Mur*_*yan 10 java jacoco sonarqube jacoco-maven-plugin

我有一个课程如下:

public class XConstants {

    public static final int A_TYPE = 1;
    public static final int B_TYPE = 2;
}
Run Code Online (Sandbox Code Playgroud)

我在我的测试中使用了这两个变量,但是当我用Jacoco检查测试覆盖率时,它显示了该类的%0测试覆盖率.我的猜测是,因为我从不实例化这个类,只使用它的静态变量.我尝试创建一个实例,测试覆盖率为%100.我怎样才能克服这个问题?

Tag*_*eev 9

JaCoCo根据实际执行的字节码百分比来衡量测试覆盖率.声明静态final final或String常量不会创建任何字节码来执行,它只是常量池中的一个条目.你在这里唯一的字节码是一个隐式的默认构造函数,通常是这样的:

aload_0
invokespecial Object.<init>
return
Run Code Online (Sandbox Code Playgroud)

因此,当你不打电话时,你有0%,当你打电话时,你有100%.

我的建议是忽略这个问题.无论如何,你不应该试图达到100%的覆盖率.毕竟它不保证任何东西:即使100%覆盖的代码可能包含严重的错误.