在对被测系统(system under test,简称SUT)进行单元测试(Unit Test)的过程中,经常会出现这种情况,被测系统调用了第三方依赖组件(depended-on component,简称DOC),而这个依赖组件你无法控制(或者还未实现)。为了让单元测试顺利进行,就必须摆脱对这些对象的依赖,通常会使用测试替代(Test Double)技术合理隔离(摆脱)外部依赖项,进而以提高单元测试效率。
隔离的单元测试意味着把单元测试中的对第三方组件依赖的部分合理的提取出来,用Test Double取而代之,破除依赖,使单元测试把注意力集中放在测试“单元”的逻辑上而不是和外部依赖项的交互上。
Test Double可以细分为:
- 虚拟对象(dummy)
- 存根(stub)
- 间谍(spy)
- 模拟对象(mock)
- 伪对象(fake)
对于初学者来说,这些分类会让人很头疼,它们彼此之间太像了,得深入学习才能真正掌握并区分彼此。截止书稿,我也还未能区分的很清楚,得后续继续学习。
有关Test Double的更多介绍,可参考: