翻译自《Programming Groovy - Dynamic Productivity for the jdk Developer》的P243。

原文如下:

Stubs vs. Mocks

In the article “Mocks Aren’t Stubs,” (http://martinfowler.com/articles/mocksArentStubs.html ), Martin Fowler discusses the difference between stubs and mocks. A stub stands in for a real object. It simply reciprocates the coached expected response when called by the code being tested. The response is set up to satisfy the needs for the test to pass. A mock object does a lot more than a stub. It helps you ensure your code is interacting with its dependencies, the collaborators, as expected. It can keep track of the sequence and number of calls your code makes on the collaborator it stands in for. It ensures proper parameters are passed in to method calls. While stubs verify state, mocks verify behavior. When you use a mock in your test, it verifies not only the state but also the behavior of the interaction of your code with its dependencies. Groovy provides support for creating both stubs and mocks, as you will see in Section 16.10, Mocking Using the Groovy Mock Library, on page 254.

翻译如下:

Stubs和Mocks的区别

在文章“Mocks不是Stubs”中(http://martinfowler.com/articles/mocksArentStubs.html ),马丁·福勒讨论了stubs和mocks之间的区别。

stub代表的是一个真实的对象。在测试代码中被调用时,它简单的按照之前对它设定来应答调用者(对stub应答的设定过程称这为训练coach)。对stub应答的设定是为了通过测试。

mock对象要比stub做的事情多得多:

  • 帮你确定你的代码和它的依赖(称为合作者collaborator)有你期望的交互。
  • 跟踪你的在Mock对象代表的合作者执行调用的序列和次数。
  • 保证方法调用传递了合适的参数。

stubs只检查的是状态(state),而mocks检查了行为(behavior)。在测试中使用mock,不仅检查你测试和其依赖之间和状态,而且还有行为。

PS:

顺便推荐一下《Programming Groovy - Dynamic Productivity for the jdk Developer》这本书。

这是一本Groovy进阶的书,入门可以先看一下《Groovy Recipes -Greasing the Wheels of jdk 》或是《Groovy Programming -An Introduction for jdk Developers》。Groovy的资料可以看看:http://blog.csdn.net/oldrat/archive/2010/02/22/5317366.aspx

《Programming Groovy》中有关的元编程的讲解应该是最全面的。

更好的是,对动态语言的编程的最佳实践也讲了很多。

Stubs和Mocks区别 (Stubs vs. Mocks)相关推荐

  1. (翻译)测试替身— Fakes, Mocks 和 Stubs

    文章目录 一.前言 二.Fake 三.Stub 四.Mock 原文:https://blog.pragmatists.com/test-doubles-fakes-mocks-and-stubs-1a ...

  2. 单元测试探析:什么是Stubs、Mocks、Spies、Dummies?带你了解4个核心工具

    在单元测试中,对象之间的依赖往往交织到一起,需要拆成各个单元才能逐个击破,这也是单元测试的目的.如何将这些交织到一起的对象拆开,需要一些工具,这些工具业内人们称其为"测试替身". ...

  3. Golang 单元测试详尽指引

    文末有彩蛋. 作者:yukkizhang,腾讯 CSIG 专项技术测试工程师 本篇文章站在测试的角度,旨在给行业平台乃至其他团队的开发同学,进行一定程度的单元测试指引,让其能够快速的明确单元测试的方式 ...

  4. 前端抢饭碗系列之Vue项目如何做单元测试

    大家好,我是若川.今天分享一篇vue项目如何做单元测试的好文,文章比较长,建议先收藏,需要时用电脑看. 点击下方卡片关注我.加个星标 学习源码系列.年度总结.JS基础系列 关于单元测试,最常见的问题应 ...

  5. 为什么测试喜欢ie_为什么我现在喜欢测试,以及为什么您也应该如此。

    为什么测试喜欢ie by Evelyn Chan 通过伊芙琳·陈 为什么我现在喜欢测试,以及为什么您也应该如此. (Why I now appreciate testing, and why you ...

  6. java高级软件工程师面试_高级软件工程师的新面试问题

    java高级软件工程师面试 I'm putting together some practice interview questions for a friend who lost his job. ...

  7. Golang单元测试指引

    一.单元测试 1. 单元测试是什么 单元是应用的最小可测试部件.在过程化编程中,一个单元就是单个程序.函数.过程等:对于面向对象编程,最小单元就是方法,包括基类.超类.抽象类等中的方法.单元测试就是软 ...

  8. Mockito_模拟

    常用注解 @Mock 模拟 创建一个对象,但无法进行实际操作 @InjectMocks 注射 用于mock时插入相应的依赖项 @Captor 捕获 用于捕获方法的参数值,来用于进一步做断言验证 @Sp ...

  9. 口袋电影_口袋中的无尽单元测试功能

    口袋电影 单元测试最佳实践 (Unit Test Best Practices) How do we write (good) unit tests? 我们如何编写(好的)单元测试? What mak ...

  10. 2022年最新csdn涨薪技术栈-app自动化测试概述

    目录 一. 应用背景 二. 测试框架介绍 1.Android自动化框架 IOS自动化框架 三. 测试流程与分类 1.测试流程 2.自动化测试分类 四. 移动操作系统与app类型 1.移动操作系统and ...

最新文章

  1. auto关键字详解 C++
  2. 如果你也时常想要上进,我们可以相互鼓励,相互促进
  3. 设计模式学习笔记 1.介绍
  4. 反射和配置文件的实际应用
  5. 【23】蔡高厅老师 - 高等数学下阅读笔记 - 重积分 - 直角坐标系下(下)23 - 27
  6. MySQL数据库的安装及环境配置
  7. 苹果发文谈iPhone SE的核心竞争力,网友:难道不是便宜吗?
  8. CODESYS 工业自动化软件存在多个严重缺陷
  9. Okhttp之同步和异步请求简单分析
  10. 使用Jorm简单的增删查改数据库
  11. DICOM医学图像处理:基于DCMTK工具包学习和分析worklist
  12. 聚类模型ari_7.9 聚类模型评估
  13. ANTLR中文手册之三(ANTLR 元语言-元语言词汇表)
  14. 路由器的网络连接模式(桥接模式和路由模式)
  15. R语言Circos图可视化
  16. HNUCM 1366 绿地装饰解题报告 (模拟)
  17. unity和android交互问题整理
  18. 关于AD17 原理图设置差分出现Number of nets in differential pair ** is 1 instead of 2的问题
  19. linux中查看文件大小
  20. c/c++ substr()函数

热门文章

  1. java学习之Swing篇(一)——QQ登录界面
  2. Error:Excepted resource of type id
  3. 【提高组NOIP2007】矩阵取数游戏
  4. 判断分解的无损连接性和保持函数依赖
  5. 中国传统色的雅称——你可知?
  6. java 同比环比_数据相关概念同比,环比
  7. 三维激光雷达路沿检测
  8. python-docx文档
  9. vue+i18n 切换语言后无法刷新数据 的 解决方案
  10. 腾讯云实验室linux基本操作