我怎样才能获得Java中各个测试的代码覆盖率

时间:2015-06-19 16:40:13

标签: java code-coverage cobertura jacoco emma

我有一个包含大量测试用例的测试类。

我想测量课堂上个别测试用例的覆盖范围。

我有什么方法可以获得一份映射测试用例和覆盖范围的报告。

2 个答案:

答案 0 :(得分:0)

我们的SD Java Test Coverage工具可以为您提供此数据。

此工具为测试中的程序添加了一个特殊的TCV类和方法:

    TCV.reset();  // resets the test coverage vector
    TCV.dump(); // writes vector to file
    TCV.setBaseName(String); // record vector file name prefix

如果应用程序调用dump函数,则会将测试覆盖率向量转储到以当前时间戳和提供的BaseName命名的文件中。

您可以通过修改测试执行框架来获取测试专用向量,无论它是什么,只是略微。在调用第N个测试用例的地方,添加对dump的调用:

    TCV.reset(); // marks everything as "not executed"
    tests.nthTestCase();
    TCV.setBaseName("nthTestCase");
    TCV.dump();

这将生成一个带时间戳的向量,仅涵盖nTestCase执行的代码。

可以通过工具的UI组件找到并显示单个测试用例结果。 UI组件还可以将所有这些单独的测试用例覆盖结果组合到一个整体测试覆盖结果中,以便为所有测试用例执行传统的操作。结果。或者,您可以比较测试用例覆盖率结果,以查看哪些测试用例包含相同的代码,以帮助消除冗余测试用例等。

UI组件还可以生成测试所涵盖的行的报告;这可以编写脚本,因此可以为单独收集的所有测试覆盖率向量生成行覆盖报告。

答案 1 :(得分:-1)

您是否尝试过Clover Clover

我知道它不是免费的,但应该能满足你的需要。