我想在不运行单元测试的情况下创建报告。我只想分析测试源代码并检查调用了哪些方法。在我的测试中,我使用了JUnit,Arquillian。我在外部服务器上运行它们,我在使用arquillian-jacoco扩展时遇到了问题。仪表应用程序无法正常启动后。有没有提供这种功能的工具?
答案 0 :(得分:2)
代码覆盖率不仅仅是调用哪些方法。它会更深层次,并在测试用例期间检查方法中的哪些行被覆盖(实际执行)。
因此,它不仅仅是简单地调用方法作为代码的一部分,而是关于任何执行流是否实际调用该方法。并且,执行流程主要取决于测试用例输入。所以,除非你运行它们,否则代码覆盖工具在这里几乎一无所知。
假设您有一些像
这样的代码if (size > 0) {
this.array = new Integer[size];
} else {
String msg = "Input size must be > 0";
logAndThrow(msg, new IllegalArgumentException(msg));
}
现在,您有效地说的是将logAndThrow()
视为已涵盖的情况,除非您有一些使用size <= 0
测试此类的测试用例,否则情况肯定不是这样。
答案 1 :(得分:1)
虽然已有很好的答案,但我想补充一点,很多事情不能简单地在编译时确定,因此只能在运行时识别。多态性就是一个很好的例子。
答案 2 :(得分:0)
一个可以通过静态分析获得代码覆盖,而无需执行代码,基本上来自每个单元测试的slicing your code。参见技术文件Static Estimation of Test Coverage。
话虽如此,我认为目前没有任何生产工具可以实现这一想法。