写点什么

ObjectMother——一款被人遗忘的测试工具

  • 2007-08-08
  • 本文字数:718 字

    阅读完需:约 2 分钟

在世界上最早使用 TDD 编写测试的技术中,有一种技术并不是使用 Mock 和 Stub,而是使用实际的业务对象。它通过创建一系列的工厂来创建和配置业务对象,并执行其中的方法,这些被初始化后的对象就可以为测试所用。这种模式的名字叫做 ObjectMother .

这项技术从来没有像 Mock 和 Stub 一样引起众多的关注,但它也从未淡出过开发人员的视野。Mocking/Stubbing 本身也有种种缺陷, 一方面,它们对依赖关系造成了破坏,就会使开发人员觉得用起来很困难,另一方面,它们实际上也是代码的冗余,所以就要在维护真实业务对象的同时,还要并行 地维护 Mocks 和 Stubs,这也就让它们显得尤为脆弱。所以碰到这个时候,开发者就会常常把 ObjectMother 找出来用。

JB Rainsberger 在为 XP Day Toronto 2007 准备一个 Rails 应用时,就用了 ObjectMother 来做测试。Maarten Winkels 认为在测试数据访问层的时候,ObjectMother 是一种可行的方案。Vikas Kerni 也因为使用Mock 要付出太多额外代价而把它们甩开换用了 ObjectMother

也有很多人认为 ObjectMother 不是一个好想法,甚或因为它的误用而认为它是一个反模式。J. Richardson 在 C2 的有关 ObjectMother 的 Wiki 页面上留言说:

实际上它应该被称作是反模式。我所亲见的那些鼓吹这种方式的人,没过几个月就自己都觉得羞愧。这种模式和那种广为人知的“把所有东西都放到一起”的模式有点相似,而且实际被创建出来的东西也是很不明显的。也许用 Builder 模式会更加有用……

但总的来说,ObjectMother 也是测试工具箱中的一款工具。你的经验是什么呢?你觉得它有用吗?如果有用的话,那它适合在什么环境中使用?如果你觉得它危险而邪恶,理由又是什么呢?查看英文原文: ObjectMother - a Forgotten Testing Tool

2007-08-08 22:26997
用户头像

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

关注

评论

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

【低代码】低代码平台协同&敏捷场景下的并行开发解决方案探索 | 京东云技术团队

京东科技开发者

敏捷 低代码 并行开发

为啥不建议用BeanUtils.copyProperties拷贝数据 | 京东云技术团队

京东科技开发者

spring BeanUtils copyProperties

铜锁/Tongsuo项目管理委员会成立,重磅发布8.4.0版本

开放原子开源基金会

开源

优测云服务平台|总结Android开发常见风险及解决方案

优测云服务平台

风险 Android开发 Android解决方案

星河创新,产业引领:大模型引领的企业智能化升级创新实践

飞桨PaddlePaddle

人工智能 深度学习 开发者 WAVE SUMMIT

软件开发

Geek_8da502

前端 JS 安全对抗原理与实践

vivo互联网技术

前端加密 JS混淆 调试和反调试

从DevOps状态报告看技术团队的文化建设

京东科技开发者

openEuler Code Camp圆满举办

开放原子开源基金会

开源

开源工业物联网大数据分论坛圆满举办

开放原子开源基金会

开源

开源治理与开发者运营分论坛圆满举办

开放原子开源基金会

开源

万能扫描仪整合软件:ExactScan pro免激活中文版

胖墩儿不胖y

Mac软件 扫描工具

荣誉 | 第七在线(7thonline)荣获STIF2023年度数智化创新典范奖

第七在线

一文掌握 Kubernetes 证书

SEAL安全

Kubernetes 云原生 Kubernetes 集群 企业号12月PK榜

2023开放原子开发者大会:赋予开发者高光时刻 推进开源生态健康发展

开放原子开源基金会

开源

从被动到主动,智能招聘为企业人效提升给出最优解

用友BIP

招聘

终端闲思录(3)- 标准三剑客的本质

蓬蒿

终端 文件描述符

稳定的数据云平台如何炼成?奇点云解读“RAS”典型问题

奇点云

奇点云 数据云平台 DataSimba

聊点个人成长那点破事儿

6点无痛早起学习的和尚

写作 21 天技术人写作行动营

3D 纹理贴图基础知识

3D建模设计

3D渲染 材质纹理贴图 3D材质编辑

QCN6274 and QCN9274: functional differences and application areas of wireless chips

wallysSK

一起学Elasticsearch系列-并发控制

Java随想录

Java 大数据 elastic 检索

企业门户平台:八项必备功能助力业务升级

天津汇柏科技有限公司

网站 企业

All in One, 快速搭建端到端可观测体系

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 华为云可观测监控大屏

七分技术、三分管理,做好供应链管理的需求预测

用友BIP

供应链

微服务广播模式实践:维护内存数据的缓存一致性

华为云开发者联盟

微服务 云原生 后端 华为云 华为云开发者联盟

AI时代数据存储管理新挑战分论坛圆满举办

开放原子开源基金会

开源

使用极狐GitLab Triage 来自动管理 Issue 和 MR

极狐GitLab

领跑 AI 时代,开放原子开发者大会——2023龙蜥操作系统大会圆满举办

开放原子开源基金会

开源

推动企业数智化国产替代 用友BIP献上中国方案

用友BIP

国产替代

ObjectMother——一款被人遗忘的测试工具_研发效能_Amr Elssamadisy_InfoQ精选文章