BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

何时应该使用Mock对象?

| 作者 Mike Bria 关注 0 他的粉丝 ,译者 李剑 关注 1 他的粉丝 发布于 2008年6月12日. 估计阅读时间: 2 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义
在“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对象框架,包括JMockEasyMockNUnit。他坚持认为,虽然这些框架很简单,但是想用得得心应手,还得花些心思。

在TDD yahoo讨论组上,也发起了精彩的讨论,值得一读。

查看英文原文When To Use Mock Objects

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT