代码覆盖率工具和TDD

时间:2013-06-14 16:33:54

标签: c# tdd code-coverage

我最近一直在评估JetBrains的DotCover,这引出了一个有趣的问题。

关注TDD时:

  • 我会针对我想要的理想界面写一个测试。
  • 红色
  • 创建最简单的实现以通过测试。
  • 绿色
  • 运行DotCover,显示100%。
  • 然后我将删除重复/重构。

如果在重构过程中我将一些功能移到自己的类中(比如为了坚持DRY或SRP),然后重新运行DotCover,那么覆盖率%将会下降,因为我不再直接测试新班。

这对我来说有点奇怪,因为我遵循TDD的原则来写绝对信。如果我修改或注释掉代码中的任何一行,测试将会中断,但报告为未覆盖。

我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

DotCover可能希望您的单位作为单位进行测试,因此间接测试会受到惩罚。并且有一些证据表明在测试中只考虑被测系统;当你提取一个类但通过调用者测试它时,你真的在​​测试调用者并且应该(可以说)模拟新类 - 并且对新类进行真正的单元测试,将其作为一个独立的单元进行测试。

答案 1 :(得分:0)

我想这会打开单元测试与集成测试定义的论点。

您可以使用过滤器从代码覆盖范围中排除区域: http://blogs.jetbrains.com/dotnet/2010/07/filtering-with-dotcover/

希望这会有所帮助。