【发布时间】:2018-03-10 16:50:57
【问题描述】:
有没有办法让代码覆盖率覆盖这样的类的类声明?
public class MyClass{
public static void foo(int bar){
System.out.println("The Number is: "+bar);
}
}
我可以通过 JUnit 测试轻松地使用 foo 方法,但 MyClass 声明保持红色。这是因为类本身没有构造函数吗?如果是这样,有没有办法覆盖那段代码,而不改变类本身的代码?
谢谢
【问题讨论】:
-
不相关,但是该类是要实例化的吗?如果没有,它可能应该有一个私有构造函数。
-
代码覆盖率告诉你什么是执行。声明不是可执行代码。
-
对此持保留态度:从一个在商店工作过一段时间的人那里强制执行代码覆盖要求,知道他们很愚蠢,因为您的覆盖工具想要突然拿起类声明.
-
因此,可能将“类”行标记为已执行,作为标记不可见默认构造函数的不良替代品。但这是一种艺术选择,在实践中几乎不重要,因为默认构造函数不做任何事情,而且您无法做很多有用的测试。我还遇到了希望将类之间的空白行标记为已覆盖的商店,以便在极端情况下文件获得 100% 的覆盖率。当你坚持 line 覆盖时,你会得到这个。如果您改为使用分支覆盖率,您可以获得 100% 的覆盖率,而无需过多地覆盖声明或空白行。
-
@IraBaxter 实际上,我今天发现自己在 StackOverflow 上寻找的原因是我有一个代码覆盖案例说我没有覆盖一个分支,其中那行代码是类声明。所以我想它仍然会发生,但我一直在四处寻找是否有其他人看到它发生过。
标签: java unit-testing junit code-coverage