我们编写代码,然后编写测试。当你编写测试时,你正在考虑你正在测试的东西的预期用法 - 你也在考虑那个东西的内部实现,把你的测试编写到尝试暴露不好的行为。
每当你改变事物的实现时,你都会添加新的代码行,有时很难确定你的测试实际上是否运行了所有代码。你能做的一件事就是设置一个断点,然后煞费苦心。有时你必须这样做。但我正在寻找一种更快,更好的方法来确保所有代码都经过测试。
想象一下设置断点并单步执行代码,但运行的每一行都会突出显示并在运行后保持突出显示。因此,当程序完成时,您可以轻松查看代码并识别在测试期间从未运行过的行。
是否有某种工具,扩展程序,加载项或其他内容,可以让您运行程序或测试,并确定哪些行已执行,哪些行不执行?这对提高测试质量很有用。
我正在使用Visual Studio和Xamarin Studio,但即使这样的工具存在于不同的语言和不同的IDE中,拥有该信息将有助于在IDE和我个人关心的语言上找到类似的答案。
答案 0 :(得分:2)
由于稻田在评论中作出回应(不确定为什么不是答案),你所寻找的术语是报道。它显然是与单元测试配对的一个非常重要的工具,因为如果某些代码没有被测试覆盖并且从不运行,那么您需要知道,以便您可以更完整地进行测试。当然,陷阱是知道一行代码被触及并不会自动告诉你如何触摸线 - 你可以有100%的测试覆盖率而不覆盖特定LOC的100%用例 - 也许你有一个内联条件,其中一位永远不会被击中,就像一个例子。
即使在测试之外,覆盖率也很有用。通过对生产中的代码执行覆盖率分析,您可以了解代码库的哪些方面在实际使用中最为关键,以及您需要关注错误修正,测试和稳健性的位置。同样,如果您的代码库中有一些区域在生产正常运行时间段内很少或从未受到影响,那么代码库的那一部分可能或应该被删除。
dotCover和dotTrace似乎可能会让你走上正确的道路。来自Python的使用,我知道我曾经使用Django-Nose,它集成了覆盖测试和报告。有独立分析的coverage.py,当然这些不是生态系统中唯一的工具,只是我使用过的工具。