Mocks 不是 Stubs
原文中文,约15000字,阅读约需36分钟。
📝
内容提要
这篇文章讨论了经典主义和模拟主义两种测试风格的差异。经典主义测试使用真实对象和状态验证,而模拟主义测试使用模拟对象和行为验证。文章还讨论了测试与实现的耦合、设计风格和测试隔离等方面的差异。无论选择哪种风格,了解这些差异对于理解测试驱动开发和使用模拟对象框架是有帮助的。
❓
Q&A
经典主义测试和模拟主义测试有什么主要区别?
经典主义测试使用真实对象和状态验证,而模拟主义测试使用模拟对象和行为验证。
什么是Mock对象,它在测试中有什么作用?
Mock对象是模拟真实对象的特例,促进基于行为验证的测试。
使用Mock对象进行测试时需要注意什么?
使用Mock对象时需要设置预期,并验证这些预期是否被调用。
模拟主义测试如何影响设计决策?
模拟主义测试倾向于鼓励使用角色接口和避免返回值的方法,从而影响设计风格。
经典主义测试和模拟主义测试在测试隔离方面有什么不同?
模拟主义测试更容易实现测试隔离,而经典测试可能导致多个测试失败。
在测试驱动开发中,选择经典主义还是模拟主义有什么考虑因素?
选择取决于上下文和协作关系的复杂性,简单关系倾向于经典主义,复杂关系倾向于模拟主义。