写点什么

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

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

关注

评论

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

一文搞懂Cookie、Storage、IndexedDB

执鸢者

大前端 Cookie indexedDB storage

第四章作业(二)

墨狂之逸才

业务中台建设 - 4种部署模式

孝鹏

部署图 隔离性 中台架构

2.2 Go语言从入门到精通:Go语言变量

xcbeyond

变量声明 28天写作 Go 语言

(28DW-S8-Day9) 区块链如何对坏节点容错:拜占庭将军问题

mtfelix

28天写作 拜占庭容错 拜占庭将军

Linux入门篇 —— 一文带你彻底搞懂Linux 文件权限管理

若尘

Linux 权限 linux 文件权限控制

“他者”德意志(三):“翻险峰”的德国电动汽车产业

脑极体

产品经理训练营知识汇总

SilentMacUser

产品经理 产品经理训练营 邱岳

架构师训练营 4 期 第9周

引花眠

架构师训练营 4 期

论文阅读:通过动态预测/完备在稀疏知识图谱上进行多跳推理

Alocasia

自然语言处理 深度学习 nlp 强化学习

我眼中的IT售前工作

Geek_dn82ci

云计算 职场 解决方案 售前

谈学习

Ryan Zheng

学习方法

SwiftUI数据流之StateObject& ObservedObject探讨

kingnight_pig

ios swift SwiftUI

SQL Server 多表数据增量获取和发布 1

happlyfox

学习 28天写作 2月春节不断更

MySQL连接超时关闭问题解决

flyer0126

MySQL MySQL优化

最值得阅读的数据仓库书籍推荐

白贺BaiHe

大数据 数据仓库 推荐书籍 数仓 构建模型

诊所数字化:诊所私域直播

boshi

直播带货 数字化医疗 七日更 28天写作

mybatis的通用插入更新方案

altantisor

Java mybatis

【LeetCode】单调数列Java题解

Albert

算法 LeetCode 28天写作 2月春节不断更

SwiftUI数据流之State&Binding

kingnight_pig

ios swift SwiftUI

作业 - 第四章 业务流程与产品文档 (二)

hao hao

区块链架构下的智慧城市发展加速

CECBC

信息安全

c++基本语法详解

张鹤羽

28天写作 3月日更

dubbo 源码 v2.7 分析:SPI机制

程序员架构进阶

Java spi 七日更 28天写作 2月春节不断更

Java 中 Vector 和 SynchronizedList 的区别

看山

Java 线程安全 vector SynchronizedList

用例2

z

数字经济发展的时代特色

CECBC

数字经济

区块链与数字货币的发展到底有什么意义

CECBC

数字货币

浅谈JVM 垃圾回收原理

跳蚤

易语言使用与研究

慕容

易语言

架构设计篇之微服务实战笔记(九)

小诚信驿站

架构师 刘晓成 小诚信驿站 28天写作

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