写点什么

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:26971
用户头像

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

关注

评论

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

以认证VMO实践者身份引领企业敏捷性新时代

ShineScrum

项目管理 敏捷、

谷云科技iPaaS产品3月更新速递|API计费、AI助手功能持续升级

RestCloud

AI API 数据集成平台 ipaas

数据分析与AI丨AI Fabric:数据和人工智能架构的未来

Altair RapidMiner

人工智能 AI 数据分析 知识图谱 RapidMiner

人工智能与机器人:打造未来工业的超级工厂

天津汇柏科技有限公司

人工智能 AI

1688商品列表API接口全面解析

代码忍者

1688API接口

如何高效爬取淘宝天猫商品数据?【官方API与非官方接口全解析】

Geek_9dbf95

批量获取企业数据 开放 API 电商api接口 免费测试 淘宝天猫

DApp开发全解析:构建去中心化应用的流程与实践指南

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

Manus哪有那么神秘,Jeecg的AI流程编排都可以实现

JEECG低代码

AIGC JeecgBoot AI流程 Manus

罗永浩的AI新战场

趣解商业

创业 AI 罗永浩

DeepSeek将驱动AGI突破?深度解读昇腾云AI应用实践

华为云开发者联盟

人工智能 大模型 AGI 昇腾云 DeepSeek

BI 工具响应慢?可能是 OLAP 层拖了后腿

镜舟科技

OLAP BI StarRocks 湖仓一体 镜舟数据库

Go 语言常见错误——字符串

FunTester

通过Func实现告警多通道发送权重管理

观测云

监控告警

SD-WAN是种怎样的网络技术?可以在哪些行业应用?

Ogcloud

SD-WAN SD-WAN组网 SDWAN SD-WAN厂商 SD-WAN厂家

未来交易,触手可及:全新交易所开发蓝图

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

SD-WAN方案可以解决哪些企业网络问题?

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商 SD-WAN厂商 SD-WAN厂家

深度测评国产 AI 程序员,在 QwQ 和满血版 DeepSeek 助力下,哪些能力让你眼前一亮?

阿里云云效

阿里云 云原生 通义灵码 AI程序员

万字长文手把手教你实现MicroPython/Python发布第三方库

不在线第一只蜗牛

Python

如何进行项目的全生命周期管理

易成研发中心

项目管理

公司共享网盘怎么建立

易成研发中心

企业网盘

NPU上运行onnxruntime

zjun

推理 ONNX Ascend

Llama 4 即将发布,引入语音能力;AI 智能运动眼镜 BleeqUp:实时对讲、AI 自动成片等功能丨日报

声网

线下活动:与宇树 G1 机器人零距离,具身智能畅谈体验会丨社区来稿

声网

深度测评国产 AI 程序员,在 QwQ 和满血版 DeepSeek 助力下,哪些能力让你眼前一亮?

阿里巴巴云原生

阿里云 AI 云原生

NineData 社区版正式上线,支持一键本地化部署!

NineData

DevOps 一键安装 NineData NineData社区版 单机部署

百度百舸万卡集群的训练稳定性系统设计和实践

Baidu AICLOUD

恢复 容错 GPU 集群 集群稳定性

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