【发布时间】:2017-11-17 18:47:45
【问题描述】:
我目前正在努力增加一个项目的测试覆盖率,大约是 93%,我正在努力实现 100%。
我注意到其中一个未被覆盖的块是 main 方法,它看起来像这样:
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
尽管应用程序有超过 90 个测试,并且有些带有 @SpringBootTest 注释,但这个 main 方法 仍然没有被覆盖。
我是否应该为此担心并确保获得 100% 的覆盖率?还是我过于完美主义者,并且某些东西根本不值得测试,就像上面的例子?
为什么上面的代码没有通过测试?我是否需要显式调用 main 方法才能运行它?我期待它在应用程序启动时被调用。
【问题讨论】:
-
你会为这个方法测试什么? args 解析器在春季工作?它找到了 Application 类?
-
在我看来,它更像是一个回归测试。如果有人向该方法添加了一些代码,使其行为不端。那有意义吗?如果没有,我是否应该不测试这种方法并告诉 jacoco 以某种方式忽略它?
-
您不应该这样做,所付出的努力并不能涵盖由此带来的实际好处。通常,您会希望使用更高级别的测试来测试这样的地方,这些测试会将您的应用程序视为可执行文件而不是代码。此外,覆盖率本身并不能证明任何事情——只是代码是在测试期间执行的,它并不能说明它是否正确,它只是一个附带指标。
-
@Etki 测试永远无法证明perfection。
标签: java spring spring-boot junit code-coverage