用于“反向”代码覆盖的工具?

时间:2016-03-09 04:48:53

标签: testing code-coverage

我熟悉一些代码覆盖工具,它告诉我测试覆盖的行/分支/等的百分比,甚至告诉我代码的哪些部分覆盖率不佳。

是否有任何相反的工具 - 也就是说,给定一段代码,它能告​​诉我哪些测试会触及它吗?这样可以很容易地开始探索陌生的&通过使用相关的测试来编写记录不佳的代码。

你可能会说从单元测试的组织方式来看应该是显而易见的,但事实是它通常不是。我曾与多个项目合作过。在这种情况下。

我碰巧对java / scala很感兴趣,但是如果有什么事情或者它只是一个完全疯狂的想法,我也很感兴趣。

2 个答案:

答案 0 :(得分:1)

JMockit工具包(我开发的)中的代码覆盖率工具提供了此功能。您可以在联机的sample coverage report中查看它。

例如,对于OrderRepository.java源文件中的第72行,报告页面显示两个测试触摸它:OrderFindersTest#findOrderByCustomerOrderFindersTest#findOrderByNumber

答案 1 :(得分:0)

这很容易实现。您所做的是单独运行单元测试并捕获其各自的跟踪信息。

现在,跟踪本质上是一个位向量,其中每个位代表程序中被覆盖的位置。

然后,您为感兴趣的代码构建一个人工跟踪。 (大多数工具都不会让这很容易,但工具可用的覆盖率信息应该可以实现这一点。)

最后,你采取人工痕迹,并将它(它有点矢量,记得吗?)与各个单元测试痕迹相交。非空交集标识了那些行使感兴趣代码的测试。

Semantic Designs(我的公司,请参阅bio)提供了测试覆盖工具,可以收集测试的各个跟踪,并可以使用其UI进行交集。一些自定义编码可以制造人造痕迹。