覆盖无法覆盖公共静态void main方法

3

使用 Junit 覆盖率工具时,它无法覆盖 public static void main 方法。如何进行覆盖?


1
你使用什么覆盖率工具来查找你的JUnit测试的覆盖率? - Stephen C
2个回答

4

确保它可测试后,只需像调用其他公共静态方法一样调用它:

YourClass.main(new String[] {"parameter 1", "parameter 2"});

在此之后,断言以下状态。


我写过类似你的代码,但是覆盖率报告显示测试没有覆盖主方法。 - Mike.Huang
你能够逐步执行你的测试吗?如果它调用了主方法,那么问题就在于测试覆盖工具排除了静态方法。 - Boris Pavlović
1
除非您使用变量参数声明了main方法,否则应该是YourClass.main(new String[] { "param 1", "param 2" });吗? - aioobe
是的,“main(String[] args)” 。并在测试用例中调用它,就像你的一样。 - Mike.Huang

0

因为它没有返回值,所以你不能检查输出。但它是做什么的呢?如果它调用了另一个方法,那就为那个方法编写一个测试。如果它不调用其他方法,那就为它编写一个测试。


这个问题的目标是覆盖main方法的所有行。我不能修改main方法的内容。我在JUnit测试中调用了main方法,但为什么覆盖率无法覆盖它呢? - Mike.Huang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接