有没有工具可以高亮显示 运行 的代码?

Is there a tool to highlight code that has been run?

我们编写代码,我们编写测试。当你写测试的时候,你在考虑你正在测试的东西的预期用途——你也在考虑那个东西的内部实现,把你的测试写到 try 揭露不良行为。

无论何时更改事物的实现,都会添加新的代码行,有时很难确定您的测试是否真的执行了事物中的所有代码。您可以做的一件事是设置一个断点,然后小心翼翼地逐步执行。有时你必须这样做。但我正在寻找一种更快、更好的方法来确保所有代码都经过测试。

想象一下设置一个断点并单步执行代码,但是 运行 的每一行都被突出显示并在 运行 之后保持突出显示。因此,当程序完成时,您可以轻松查看代码并识别在测试期间从未 运行 的行。

是否有某种工具、扩展、加载项或其他东西可以让您 运行 程序或测试,并确定哪些行已执行,哪些行未执行?这对于提高测试质量很有用。

我正在使用 Visual Studio 和 Xamarin Studio,但即使存在针对不同语言和不同 IDE 的类似工具,拥有该信息也有助于在IDE 我个人比较关心的语言。

正如 paddy 在评论中的回复(不确定为什么不是答案),您要查找的术语是覆盖率。显然,它是与单元测试配对的非常重要的工具,因为如果某些代码未被测试覆盖并且从未运行,您会想知道,以便可以更全面地进行测试。当然,陷阱是知道一行代码被触及并不会自动告诉您该行是如何被触及的——您可以拥有 100% 的测试覆盖率,而无需覆盖特定 LOC 的 100% 用例——也许您有一个内联条件,其中一位永远不会被击中,举个例子。

即使在测试之外,了解覆盖率也很有用。通过对生产中的代码执行覆盖率分析,您可以了解代码库的哪些方面在实际使用中最为关键,以及您需要在哪些方面关注错误修复、测试和稳健性。同样,如果您的代码库中的某些区域在生产正常运行时间的统计显着期间很少或永远不会受到影响,那么也许可以或应该削减该代码库的一部分。

dotCover 和 dotTrace 看起来可能会让您走上正确的道路。由于在 Python 中的使用,我知道我曾经使用 Django-Nose,它集成了覆盖率测试和报告。有 coverage.py 用于独立分析,当然这些不是生态系统中唯一的工具,只是我使用的工具。