我最近一直在评估JetBrains的DotCover,这引出了一个有趣的问题。
关注TDD时:
如果在重构过程中我将一些功能移到自己的类中(比如为了坚持DRY或SRP),然后重新运行DotCover,那么覆盖率%将会下降,因为我不再直接测试新班。
这对我来说有点奇怪,因为我遵循TDD的原则来写绝对信。如果我修改或注释掉代码中的任何一行,测试将会中断,但报告为未覆盖。
我错过了什么吗?
答案 0 :(得分:2)
DotCover可能希望您的单位作为单位进行测试,因此间接测试会受到惩罚。并且有一些证据表明在测试中只考虑被测系统;当你提取一个类但通过调用者测试它时,你真的在测试调用者并且应该(可以说)模拟新类 - 并且对新类进行真正的单元测试,将其作为一个独立的单元进行测试。
答案 1 :(得分:0)
我想这会打开单元测试与集成测试定义的论点。
您可以使用过滤器从代码覆盖范围中排除区域: http://blogs.jetbrains.com/dotnet/2010/07/filtering-with-dotcover/
希望这会有所帮助。