分享

Mock与Stub的区别

 ThinkTank_引擎 2016-08-09

Mock:

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

何时使用Mock:

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

Mock的优点:

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

Mock的缺点:

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

Stub:

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

何时用Stub:

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

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

Stub的优点:

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

Stub的缺点:

  • Stub往往比较复杂难以实现,而且需要经常性的调试它。
  • 由于Stub模拟的都是难以测试的环境依赖,其复杂性导致它难以维护。
  • 实现Stub并不能提供细粒度的单元测试。
  • 不同的情况需要不同的Stub实现策略。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多