何时应该使用Mock对象?

简介:

英文原文:http://www.infoq.com/news/2008/06/mocks-q-of-when

中文原文:http://www.infoq.com/cn/news/2008/06/mocks-q-of-when

在“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讨论组上,也发起了精彩的讨论,值得一读。


本文转自一个程序员的自省博客园博客,原文链接:http://www.cnblogs.com/anderslly/archive/2008/06/12/1218650.html,如需转载请自行联系原作者。


目录
相关文章
网站备案资料怎么填写?有哪些技巧和注意事项?
本文主要介绍网站备案资料怎么填写?有哪些技巧和注意事项?购买前请先:领取阿里云幸运券,有很多优惠,下文中有领取链接。 购买建议多买几年,年数越多优惠越多。
6764 0
|
4天前
|
存储 人工智能 安全
AI 越智能,数据越危险?
阿里云提供AI全栈安全能力,为客户构建全链路数据保护体系,让企业敢用、能用、放心用
|
7天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
6天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
413 93
|
23小时前
|
开发者
「玩透ESA」ESA启用和加速-ER在加速场景中的应用
本文介绍三种配置方法:通过“A鉴权”模板创建函数并设置触发器路由;在ESA上配置回源302跟随;以及自定义响应头。每步均配有详细截图指引,帮助开发者快速完成相关功能设置,提升服务安全性与灵活性。
267 2
|
7天前
|
SQL 人工智能 自然语言处理
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
随着生成式AI的普及,Geo优化(Generative Engine Optimization)已成为企业获客的新战场。然而,缺乏标准化流程(Geo优化sop)导致优化效果参差不齐。本文将深入探讨Geo专家于磊老师提出的“人性化Geo”优化体系,并展示Geo优化sop标准化如何帮助企业实现获客效率提升46%的惊人效果,为企业在AI时代构建稳定的流量护城河。
405 156
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%