Testing 用于“的工具”;逆;代码覆盖率?

Testing 用于“的工具”;逆;代码覆盖率?,testing,code-coverage,Testing,Code Coverage,我熟悉许多代码覆盖工具,它们告诉我测试覆盖的行/分支/等的百分比,甚至告诉我代码的哪些部分覆盖率很差 有没有相反的工具——也就是说,给定一段代码,它能告诉我哪些测试涉及到它吗?这将使我们很容易开始探索不熟悉的、文档记录不完整的代码,方法是使用相关的测试 您可能会说,从单元测试的组织方式来看,这应该是显而易见的,但事实往往并非如此。我参与过不止一个这样的项目 我碰巧对java/scala感兴趣,但我也很感兴趣,如果有什么东西能做到这一点,或者这只是一个完全疯狂的想法。这很容易实现。您要做的是单独运

我熟悉许多代码覆盖工具,它们告诉我测试覆盖的行/分支/等的百分比,甚至告诉我代码的哪些部分覆盖率很差

有没有相反的工具——也就是说,给定一段代码,它能告诉我哪些测试涉及到它吗?这将使我们很容易开始探索不熟悉的、文档记录不完整的代码,方法是使用相关的测试

您可能会说,从单元测试的组织方式来看,这应该是显而易见的,但事实往往并非如此。我参与过不止一个这样的项目


我碰巧对java/scala感兴趣,但我也很感兴趣,如果有什么东西能做到这一点,或者这只是一个完全疯狂的想法。

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

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

然后为感兴趣的代码构造一个人工跟踪。(大多数工具都不容易做到这一点,但该工具提供的覆盖率信息应该可以做到这一点)

最后,获取人工跟踪,并将其与单个单元测试跟踪相交(记住,这是一个位向量)。非空交叉点标识执行感兴趣代码的测试


语义设计(我的公司,见bio)提供了测试覆盖率工具,可以收集测试的单个跟踪,并可以使用其UI进行交互。一些自定义编码可能会产生人工痕迹。

JMockit工具包(我开发的)中的代码覆盖工具提供了此功能。您可以在在线提供的中看到它的工作情况

例如,对于源文件中的第72行,报告页面显示有两个测试涉及到它:
OrderFindersTest#findOrderByCustomer
OrderFindersTest#findOrderByNumber