【发布时间】:2014-09-14 16:19:57
【问题描述】:
我现在正在学习所谓的伦敦 TDD 学院(由外而内的方法)。
因此,我为第一个功能创建了验收测试并开始开发应用程序,并意识到我可以使用我的测试框架的存根代替尚未在主程序中直接创建的对象,而不是测试代码。
这有意义吗?
【问题讨论】:
-
我自己并没有对此投反对票,但您可能想将问题的“这是否有意义”部分改写为导致不那么自以为是的答案。尝试具体说明什么是有意义的或没有意义的,并描述它。
我现在正在学习所谓的伦敦 TDD 学院(由外而内的方法)。
因此,我为第一个功能创建了验收测试并开始开发应用程序,并意识到我可以使用我的测试框架的存根代替尚未在主程序中直接创建的对象,而不是测试代码。
这有意义吗?
【问题讨论】:
如果我正确理解伦敦风格,您将专注于测试代码中合约的交互流程。因此,除非您没有使用某种框架为您执行此操作(例如 .NET 中的 Moq),否则我假设您(现在)会自己开发一些模拟(存根)。在这种情况下,将它们提升为第一类对象作为生产代码的一部分听起来非常合理。
如果您的特定语言允许,您可以将其全部转换。继续使用以前的存根作为完整的类成员,然后扩展实际实现以继续将它们用作模拟对象,测试与所有收集器的交互以及您可能拥有的验证代码。如果你的存根中没有任何特殊的测试代码,那么它们基本上是没有操作的实体,那么你使用它们真的没有问题。
事实上,早在所有花哨的框架出现之前,我们真的不得不手动模拟这很常见的一切。
【讨论】: