我熟悉一些代码覆盖工具,它告诉我测试覆盖的行/分支/等的百分比,甚至告诉我代码的哪些部分覆盖率不佳。
是否有任何相反的工具 - 也就是说,给定一段代码,它能告诉我哪些测试会触及它吗?这样可以很容易地开始探索陌生的&通过使用相关的测试来编写记录不佳的代码。
你可能会说从单元测试的组织方式来看应该是显而易见的,但事实是它通常不是。我曾与多个项目合作过。在这种情况下。
我碰巧对java / scala很感兴趣,但是如果有什么事情或者它只是一个完全疯狂的想法,我也很感兴趣。
答案 0 :(得分:1)
JMockit工具包(我开发的)中的代码覆盖率工具提供了此功能。您可以在联机的sample coverage report中查看它。
例如,对于OrderRepository.java
源文件中的第72行,报告页面显示两个测试触摸它:OrderFindersTest#findOrderByCustomer
和
OrderFindersTest#findOrderByNumber
。
答案 1 :(得分:0)
这很容易实现。您所做的是单独运行单元测试并捕获其各自的跟踪信息。
现在,跟踪本质上是一个位向量,其中每个位代表程序中被覆盖的位置。
然后,您为感兴趣的代码构建一个人工跟踪。 (大多数工具都不会让这很容易,但工具可用的覆盖率信息应该可以实现这一点。)
最后,你采取人工痕迹,并将它(它有点矢量,记得吗?)与各个单元测试痕迹相交。非空交集标识了那些行使感兴趣代码的测试。
Semantic Designs(我的公司,请参阅bio)提供了测试覆盖工具,可以收集测试的各个跟踪,并可以使用其UI进行交集。一些自定义编码可以制造人造痕迹。