2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

🏆「作者推荐」Java技术专题-JDK/JVM的新储君—GraalVM和Quarkus

码界西柚

Java JVM GraalVM 8月日更

GraphQL设计思想

Ryan Zheng

graphql

文件上传绕过思路拓展

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

译文 | 四张画布教你判断「产品开发优先级」

LigaAI

产品经理 产品开发 画布 产品优先级

webrtc BitrateAllocator 带宽分配器

webrtc developer

WebRTC

模块一作业

小智

架构实战营

MySQL 不完全入门指南

Java 编程 架构 面试 架构师

软件测试框架之——Postman参数化(超详细小白教程)

程序员阿沐

软件测试 自动化测试 接口测试

在?进来看看新一季周边到底做点啥?【话题讨论】

气气

话题讨论

DEX去中心化交易所自动刷量机器人开发|去中心化做市机器人

Geek_23f0c3

去中心化交易所系统开发 量化交易机器人系统开发 量化机器人 做市机器人 自动刷量机器人

华为高级技术专家多年经验分享微服务治理体系、架构及实践文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

立于山巅!他,凭什么抗住万亿级流量冲击!

博文视点Broadview

一文带你掌握 OceanBase 社区版部署细节及原理

OceanBase 数据库

数据库 分布式数据库 oceanbase OceanBase 开源 OceanBase 社区版

零基础入门:基于开源WebRTC,从0到1实现实时音视频聊天功能

JackJiang

音视频 WebRTC 即时通讯 IM

没有7年经验你真学不会这份SpringCloud实战演练文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

20年IT老民工苦心编撰成超大流量分布式系统架构解决方案文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

堡垒机和跳板机的三大区别分析-行云管家

行云管家

运维 堡垒机 IT运维 跳板机

影像篡改与识别(一):胶片时代

腾讯安全云鼎实验室

影像 暗房技术 篡改识别

多样数字人民币钱包来袭,阻力与动力并存

CECBC

终于有大牛把Spring微服务架构设计第2版文档给整理完毕了

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

DEX去中心化交易所自动刷量机器人开发|去中心化做市机器人

量化系统19942438797

去中心化 做市机器人

摩尔时代如何押注AI算力?英特尔战术大揭秘

科技新消息

论坛接口测试——Postman数据驱动(超详细小白教程)

程序员阿沐

编程 程序员 软件测试 自动化测试 接口测试

如何优雅的在业务中使用设计模式(代码如诗)

小呆呆666

flutter android 大前端 设计模式

短视频询盘获客系统开发案例解析

获客I3O6O643Z97

抖音、快手获客系统 抖音矩阵拓客

【虚拟机专栏】智能合约执行引擎的前世今生

趣链科技

由阿里三位专家撰写:数据库高效优化:架构、规范SQL技巧文档

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

简单、快捷、低成本的超写实虚拟人平台来了……

百度开发者中心

人工智能 AI 最佳实践 虚拟人 前沿技术

来了!《中国移动2021智能硬件质量报告》正式发布

【等保测评】黑龙江等保测评机构详细信息说明

行云管家

网络安全 等保 等级保护 等保测评

解密优酷智能生产技术,看 AI 赋能内容数字化

阿里云CloudImagine

音视频 短视频 视频处理 视频制作 视频云

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