写点什么

何时应该使用 Mock 对象?

  • 2008-06-11
  • 本文字数:700 字

    阅读完需:约 2 分钟

在“Ode To Code“网站上,K Scott Allen理性地分析了如何在单元测试中使用mock 对象,并分享了他针对mock 对象框架使用情况的想法

首先,Allen 就人们对 mock 的常见误解,抛出了尖锐的意见:

我们知道,像与 SMTP 服务器通信的对象这样的资源,是很难在单元测试中使用的,有些人以为,只有在需要模拟出与这种资源之间的交互行为时,才用得上 mock 对象。他们是错的。

接下来,他引用了 Colin Mackay 讲述 mock 的论文,列出了一些常见的使用 mock 的场景: - 真实对象有着不确定的行为

  • 真实对象很难创建
  • 真实对象的行为很难触发
  • 真实对象响应缓慢
  • 真实对象是用户界面
  • 真实对象使用了回调机制
  • 真实对象尚未存在

然后 Allen 便道出了文章的主旨。他认为,即使是上面列表中的内容也稍显肤浅,从更深刻、更普遍的意义而言,应该是”在你想把被测试的代码分离的时候, test doubles [mocks] 就显出了作用。“简而言之,按照 Allen 的观点,用了 mock 对象,业务组件的测试代码就可以不依赖其它组件了;试举一例来看,A 依赖于 B,但 A 的单元测试只会因为 A 的问题而出现问题,跟 B 的状态无干。 文章还讲到了在真正的测试驱动开发中, mock 对象所扮演的角色

"模拟角色,而非对象"的作者们写到,mock 技术: “……在基于对象角色构建的系统中,可以识别出各种角色类型……尤其是,我们已经知道了 Mock Object 可以为我们带来的最大好处——曾被称为接口识别的概念”。

在文章的最后,Allen 评价了一些 mock 对象框架,包括 JMock EasyMock NUnit 。他坚持认为,虽然这些框架很简单,但是想用得得心应手,还得花些心思。 在 TDD yahoo 讨论组上,也发起了精彩的讨论,值得一读。

查看英文原文 When To Use Mock Objects

2008-06-11 02:591983
用户头像

发布了 197 篇内容, 共 50.3 次阅读, 收获喜欢 20 次。

关注

评论

发布
暂无评论
发现更多内容

Python OpenCV 图片高斯模糊

梦想橡皮擦

Python OpenCV 4月日更

翻译:《实用的Python编程》08_03_Debugging

codists

Python

并发容器与并发控制 - JUC

学Java关注我

Java 编程 程序员 架构 计算机

计算机原理学习笔记 Day2

穿过生命散发芬芳

计算机原理 4月日更

架构师训练营 4 期 大作业

引花眠

架构师训练营 4 期

再谈日更公众号

彭宏豪95

写作 感悟 微信公众号 4月日更

PI的一种简写。

山@支

吃透Nginx编译安装过程

书旅

nginx

浅析LSM-Tree存储模型

正向成长

LSM树 KV存储引擎

嘉云公司研发效能平台实践

小江

研发效能 CI/CD

安卓开发实战讲解!从新手到Flutter架构师,一篇就够!快来收藏!

欢喜学安卓

android 程序员 面试 移动开发

Docker 环境清理的常用方法

xcbeyond

Docker 4月日更

算法训练营 - 学习笔记 - 第二周

心在飞

安卓开发基础面试题,分享一点面试小经验,含BATJM大厂

欢喜学安卓

android 程序员 面试 移动开发

Dubbo 学习笔记(二) Spring Boot 整合 Dubbo

U+2647

Spring Boot dubbo 4月日更

猫鼠游戏,一个刷票老千看在线投票项目的防范与取舍

ucsheep

安全 在线投票 防作弊 刷票

重读《重构2》

顿晓

重构 4月日更

Java 并发基础(五):面试实战之多线程顺序打印

看山

Java并发

华仔架构实战营 - 作业 - 模块2

曲元洪

架构实战营

深入剖析 | JVM-Sandbox核心源码

九叔(高翔龙)

JVM 中间件 类加载 Sandbox 类隔离

「架构师训练营 4 期」大作业二

凯迪

架构师训练营 4 期

GitHub已爆火的Java突击手册,全面详细对标P7岗!真的很全面

比伯

Java 编程 架构 程序人生 计算机

Seldon 使用 (二):打包模型

托内多

tensorflow kubeflow Kubernetes PyTorch seldon

继续探究:一文理清JVM和GC(下)

比伯

Java 架构 程序人生 计算机 技术宅

关于列表转字符串这个过程的曲折

ベ布小禅

4月日更

taskwarrior ,一款提升效率的命令行的 TODO list 工具

Red

效率工具 TODO linux操作

陪伴

小天同学

陪伴 育儿 个人感悟 4月日更

树莓派人表情识别

IT蜗壳-Tango

IT蜗壳教学 4月日更

手撕83K STAR的Axios设计思想,并进行能力增强

梁龙先森

源码分析 大前端 axios

hive的数据存储格式

大数据技术指南

hive 4月日更

「架构师训练营 4 期」大作业一&二

凯迪

架构师训练营 4 期

何时应该使用Mock对象?_敏捷_Mike Bria_InfoQ精选文章