Mock与Stub的区别

Mock:

关注行为验证。细粒度的测试,即代码的逻辑,多数情况下用于单元测试

何时使用Mock:

  • 真实对象的行为具有不确定性。
  • 真实对象难以创建。
  • 真实对象的行为难以模拟(例如网络错误)。
  • 真实对象运行效率很低。
  • 真实对象有或者是UI。
  • 测试需要得到某个对象列表,但是真实对象必须在某种环境下才能提供。
  • 真实对象还没实现。

Mock的优点:

  • 运行速度快,测试覆盖率高,容易实现且可以形成良好的测试文档。

Mock的缺点:

  • 不是银弹,对于集成测试等粗粒度且耗时的测试不太适用。

Stub:

关注状态验证。粗粒度的测试,在某个依赖系统不存在或者还没实现或者难以测试的情况下使用,例如访问文件系统,数据库连接,远程协议等。

何时用Stub:

需要用到Mock或者Stub的情况,往往是测试的代码存在依赖,当这种依赖难以实现或者不稳定的时候可以考虑使用Stub策略,例如,需要测试的系统,可能需要访问数据库,依赖于运行环境(安全性,存储,Web Service),或者需要访问远程文件系统,访问远程协议(HTTP,SOAP)等。

由于现存的应用的太复杂或者过于脆弱,修改它需要大量的人天。诸如不同系统之间的集成测试,类属于粗粒度的测试皆可考虑使用Stub。

Stub的优点:

  • 能弥补Mock的不足,能够模拟复杂的测试环境。

Stub的缺点:

  • Stub往往比较复杂难以实现,而且需要经常性的调试它。
  • 由于Stub模拟的都是难以测试的环境依赖,其复杂性导致它难以维护。
  • 实现Stub并不能提供细粒度的单元测试。
  • 不同的情况需要不同的Stub实现策略。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值