单元测试:Test Double

1060 篇文章 300 订阅
本文探讨了在单元测试中如何使用TestDouble技术来隔离被测系统对第三方组件的依赖,以提高测试效率。TestDouble包括虚拟对象、TestStub、间谍、模拟对象和伪对象等类型,它们在不同场景下帮助我们创建可控的测试环境。虽然TestDouble是有效的测试工具,但应注意其并非万能,仍需确保至少有一个测试验证真实依赖对象的使用。
摘要由CSDN通过智能技术生成

在对被测系统(system under test,简称SUT)进行单元测试(Unit Test)的过程中,经常会出现这种情况,被测系统调用了第三方依赖组件(depended-on component,简称DOC),而这个依赖组件你无法控制(或者还未实现)。为了让单元测试顺利进行,就必须摆脱对这些对象的依赖,通常会使用测试替代(Test Double)技术合理隔离(摆脱)外部依赖项,进而以提高单元测试效率。
在这里插入图片描述
隔离的单元测试意味着把单元测试中的对第三方组件依赖的部分合理的提取出来,用Test Double取而代之,破除依赖,使单元测试把注意力集中放在测试“单元”的逻辑上而不是和外部依赖项的交互上。

  • 在项目中,我们时常会遇到由于待测系统依赖组件无法工作而造成的测试阻碍,这是严重影响项目交付的风险之一,而Test Double就是规避这个风险的手段。在测试过程中,我们使用Test Double替代真实的依赖组件去和待测系统进行交互,Test Double不必和真实的依赖组件的实现一模一样,比如不用去实现依赖组件复杂的内部逻辑等,我们只需要在满足测试需求范围内,确保对于待测系统来说Test Double提供的API是和依赖组件提供的一样的,API是怎么实现的在这个上下文就显得不重要了。基于这个特点,Test Double多用于自动化测试比如单元测试和集成测试。
  • 那么Test Double就是万能的吗?显然不是,毕竟我们是使用的是替代品而不是真实产品环境的配置,所以我们需要至少有一个测试去验证使用真实依赖对象的产品。此外,要时刻注意我们是使用Test Double去代替待测系统的依赖对象而不是直接去代替待测系统的部分功能,不然我们就在测试一个“错误”的产品。

Test Double可以细分为:

  • 虚拟对象(dummy)
  • Test Stub
  • 间谍(spy)
  • 模拟对象(mock
  • 伪对象(fake)

在这里插入图片描述
对于初学者来说,这些分类会让人很头疼,它们彼此之间太像了,得深入学习才能真正掌握并区分彼此。截止书稿,我也还未能区分的很清楚,得后续继续学习。

有关Test Double的更多介绍,可参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值