有没有办法确定可能执行给定代码行的单元测试集?换句话说,你能否自动确定不只是whether给定的行已被覆盖,但覆盖它的实际测试集是什么?
考虑一个包含 50K 单元测试的大型代码库。显然,运行所有这些可能需要很长时间——即使不是几天,也可能是几个小时。在这样的代码库中工作,您希望能够执行一些subset所有单元测试,仅包括那些覆盖您刚刚触及的行(或多行)的单元测试。当然,您可以手动找到一些并运行它们,但我正在寻找一种更快、更全面的方法。
如果我的想法正确的话,这应该是可能的。工具可以静态地遍历每个单元测试引出的所有代码路径,并得出可从该测试访问的程序片段。然后,您应该(理论上)能够计算在其切片中包含给定行的单元测试集,这意味着该行可以由该测试执行(“可以”而不是“将”,因为实际的代码路径将仅在运行时根据输入或其他条件确定)。给定的代码行可能有大量执行它的测试(例如,共享库中的代码),而其他行可能很少(或没有)测试覆盖它们。
So:
我的推理对这个想法合理吗?理论上可以做到吗?或者我遗漏了什么?
是否已经有一个工具可以做到这一点?或者,这是一个我没有遇到过的名字的常见现象吗?指向 Java 世界中的工具或有关该主题的一般研究的指针将不胜感激。
JetBrains 的dotCover http://www.jetbrains.com/dotcover现在 .NET 代码也具有此功能。可以通过 dotCover 菜单中的“显示覆盖测试”选项或按 Ctrl + Alt + K 来访问它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)