【发布时间】:2015-09-05 17:34:48
【问题描述】:
我有一个测试类,里面有一堆测试用例。
我想测量班级中个别测试用例的覆盖率。
有什么方法可以让我得到一份映射测试用例和覆盖率的报告。
【问题讨论】:
-
您想测量什么,究竟是什么?每个单独的测试覆盖的整个生产代码库的百分比? (但是,这样做有什么意义?)还是别的什么?
-
我想知道 prod 代码库中单个测试用例所涵盖的类或方法。我的目的不是衡量覆盖率。
-
您始终可以运行单个测试用例,然后检查由此产生的覆盖率报告。但是您可能希望一次运行整个测试套件。据我所知,现有的 Java 代码覆盖工具都没有提供这种开箱即用的功能(来自 Ira 的答案的解决方案似乎需要用户进行一些编码,所以我没有计算在内)。我不太了解这种需求,所以我不知道这个功能是否值得在一个工具中使用。
-
@Rogério:我同意,我们的解决方案并不是开箱即用的。那是因为我们的测试覆盖率收集工具独立于测试执行框架。我想我们建议的更改很容易进行;一个好的框架枚举然后执行测试,这些更改只需要在枚举的(可能是单个)点进行。通过该更改,所有测试都可以运行,但覆盖率收集是按照 OP 的要求在每个测试的基础上完成的。
-
@IraBaxter 是的。对于 JUnit,必须在每个测试类上创建和指定自定义
Runner;对于 TestNG,必须创建和配置ITestNGListener实现。这两种情况应该覆盖 99% 的用户群(只是猜测)。尽管如此,这仍需要一些不小的努力。但我怀疑这不是一个“真正的”需要。就个人而言,我没有看到该功能的明确用途(需要时,我只需运行一个测试,然后检查覆盖率报告)。
标签: java code-coverage cobertura jacoco emma