Ian*_*ley 7 unit-testing code-coverage
有没有办法确定可能执行给定代码行的单元测试集?换句话说,您是否可以自动确定是否覆盖了给定的行,而是覆盖它的实际测试集?
考虑使用50K单元测试的大代码库.很明显,它可能需要很长时间才能运行它们 - 如果不是几天的话.在这样的代码库中工作,您希望能够执行所有单元测试的某些子集,包括那些覆盖您刚触及的行(或行)的单元测试.当然,你可以手动找到一些并运行它们,但我正在寻找一种方法来更快,更全面地完成它.
如果我正确地思考这个问题,那应该是可能的.一个工具可以静态地遍历从每个单元测试引出的所有代码路径,并提供从该测试可到达的程序片段.然后你应该(理论上)能够计算在它们的切片中包含给定行的单元测试集合,这意味着该行可以由该测试执行("可以"而不是"将",因为实际的代码路径将仅在运行时根据输入或其他条件确定).给定的代码行可能有大量执行它的测试(例如,共享库中的代码),而其他行可能很少(或没有)测试覆盖它们.
所以:
我的理由听起来像这个想法吗?它理论上可以做到,还是有什么东西我要遗漏?
是否已经有一个可以做到这一点的工具?或者,这是一个常见的事情,我还没有碰到过一个名字?指出java世界中的工具,或者对该主题的一般研究,将不胜感激.