代码覆盖率未达到类声明

JR3*_*652 5 java junit unit-testing code-coverage

有没有办法像这样覆盖类的类声明而获得代码覆盖?

public class MyClass{

    public static void foo(int bar){
        System.out.println("The Number is: "+bar);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以通过JUnit测试轻松地达到foo方法,但是MyClass声明保持红色。这是因为类本身没有构造函数吗?如果是这样,有什么办法可以覆盖那部分代码,而无需更改类本身的代码?

谢谢

小智 6

这可能取决于您的特定环境。但是我只是检查了Eclipse / EclEmma,然后看到了您描述的行为。

请记住,该类确实具有构造函数-这是默认构造函数。如果您进行的测试仅调用new MyClass(),则红色标记似乎消失了。

但是-对于仅具有静态方法的类,首选方法是将该类标记为,final并创建一个私有构造函数。当然,如果您创建一个私有构造函数,它将在代码覆盖率中显示为红色-因为您无法调用私有构造函数!

最后,请记住,代码覆盖率是一种工具。我不会为查看器中的红色标记所困扰。

  • 当你在工作中没有强制使用 SonarQube 时,说“不要因为红色标记而生气”之类的话一定很容易,所以红色标记现在意味着你的 PR 没有进入。 (2认同)