java - 如何获得 Java 中各个测试的代码覆盖率

标签 java code-coverage cobertura jacoco emma

我有一个测试类,其中有很多测试用例。

我想测量类(class)中单个测试用例的覆盖率。

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

最佳答案

我们的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

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

您可以通过稍微修改您的测试执行框架(无论它是什么)来使用它们来获取特定于测试的 vector 。无论您在何处调用第 N 个测试用例,请添加对 dump 的调用:

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

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

可以通过该工具的 UI 组件找到并显示各个测试用例结果。 UI 组件还可以将所有这些单独的测试用例覆盖率结果组合成总体测试覆盖率结果,以给出传统的“所有测试用例执行的所有内容”结果。或者,您可以比较测试用例覆盖率结果,看看哪些测试用例覆盖了相同的代码,以帮助消除冗余测试用例等。

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

关于java - 如何获得 Java 中各个测试的代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30943153/

相关文章:

java - linux top 显示 java 线程?

java - Jet Creator 音乐 - EAS Synth.dll

c++ - 核心转储和 gcov 覆盖率报告

java - EMMA 究竟是如何标记被覆盖的代码行的……?

java - 运行时从哪里获取 Sentry/Raven DSN?

java - android中fragment之间共享数据

javascript - JSTestDriver覆盖eclipse插件

javascript - W3C 通知范围

code-coverage - 如何将 C++ Cobertura 覆盖率报告导入 Sonar?

xml - 是否有将 Emma XML 报告转换为 Cobertura XML 格式的工具?