测试替身: Mock、Spy、Stub

本文介绍了测试替身的概念,包括 Dummy、Fake、Stub、Spy 和 Mock 的区别。重点讨论了 Mockito 框架在单元测试中的应用,包括如何使用 mock、spy 方法,以及 verify 传入下游参数对象的方法。此外,还讲解了如何修改 mock 对象的行为,使用 spy 实现部分真实行为的模拟,并展示了使用注解简化测试代码的方法。最后提到了 reset mock 的功能,以保持测试的独立性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Test Double 简介

对于一个应用程序或者一个系统而言,很难给你一个纯粹的类进行单元测试。对象之间的依赖往往交织到一起,需要拆成各个单元才能逐个击破,也是单元测试的目的。

需要将这些交织到一起的对象拆开,需要一些工具,例如模拟一些数据、替换一些具有某些特定行为的类等。 网站 xunitpatterns.com 把这些工具称为 Test Double,翻译过来就是”测试替身“。

Martin Fowler 为了让这些概念更容易理解,在他的网站上重新更加具体的定义了它们:

  • Dummy 被用来仅仅作为填充参数列表的对象,实际上不会用到它们,对测试结果也没有任何影响。
  • Fake 一些假的对象或者组件,测试过程中会被用到。例如内存数据库 h2,假的用于用户鉴权的 Bean,一般只会在测试环境下起作用,不会应用于生产。
  • Stubs 为被测试对象提供数据,没有任何行为,往往是测试对象依赖关系的上游。
  • Spies 被依赖对象的代理,行为往往由被代理的真实对象提供,代理的目的是为了断言程序运行的正确性。
  • Mocks 模拟一个具有特性行为的对象,在测试开始
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值