1

我最近一直在评估 JetBrains 的 DotCover,它让我想到了一个有趣的问题。

遵循 TDD 时:

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

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

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

我错过了什么吗?

4

2 回答 2

2

DotCover 可能希望将您的单元作为单元进行测试,因此会受到间接测试的惩罚。在测试中只考虑被测系统的论点是有道理的。当您提取一个类但通过调用者对其进行测试时,您实际上是在测试调用者并且应该(可以说)模拟新类 - 并对新类进行真正的单元测试,将其作为独立单元进行测试。

于 2013-06-15T00:56:20.543 回答
0

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

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

希望这可以帮助。

于 2013-06-16T16:18:39.380 回答