代码覆盖率报告未运行测试

时间:2013-06-26 07:32:41

标签: java unit-testing testing code-coverage emma

我想在不运行单元测试的情况下创建报告。我只想分析测试源代码并检查调用了哪些方法。在我的测试中,我使用了JUnit,Arquillian。我在外部服务器上运行它们,我在使用arquillian-jacoco扩展时遇到了问题。仪表应用程序无法正常启动后。有没有提供这种功能的工具?

3 个答案:

答案 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

话虽如此,我认为目前没有任何生产工具可以实现这一想法。