写点什么

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

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

关注

评论

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

怒肝 Linux 学习路线,这回不难

程序员鱼皮

Linux 编程 后端 开发 java

ToB产品如何自传播(上)

石云升

产品经理 产品设计 产品思维 10月月更

升级了 Windows 11 正式版,有坑吗?

王磊

通关宝典!Java 面试核心知识让你面试过,过,过!

Java 程序员 面试 后端 构架

RUOYI 框架教程 16|关于若依RuoYi.jar卡顿,僵死,假死,系统无反映解决方案

Java_若依框架教程

技术 Ruoyi 开发 框架 若依

观测云产品更新|新增主机网络性能监测、图表矩形树图、多监测关联查询等功能

观测云

功能更新

区块链通证经济的意义

CECBC

被疫情“带飞”的家庭健身市场,是时候卷起来了

脑极体

自定义View:如何绘制一个饼图

Changing Lin

10月月更

无敌!学透美团老哥的这套微服务进阶学习手册拿个P7还是so easy!

Java 架构 面试 程序人生 编程语言

这么卷吗?大三学生喜获阿里提前批

Java 程序员 架构 后端

区块链通证经济和传统经济的区别,如何实现

CECBC

总结出这份学习笔记,帮助朋友成功跳槽!六年阿里工作,苦熬到 P7经验分享!

Java 程序员 架构 后端 工程师

面试多次被拒,“两个月”61天,我收到了蚂蚁金服P7级的offer

Java spring 程序员 架构 编程语言

Leetcode题目解析:274. H 指数

程序员架构进阶

面试 算法 LeetCode 10月月更

互动视频和5G的相互成就

脑极体

2021金九银十Java面试经历:腾讯5面(已拿offer)

Java 编程 程序员 架构 面试

凌晨加班回家路上捡到阿里技术人限产的MySQL高级笔记及面试宝典,从此我的人生像开挂一样!

Java 架构 面试 程序人生 编程语言

一女程序员因薪酬问题离职,rm -f * 删库,瘫痪6个小时,被判9个月

收到请回复

Java 程序员 面试 面经

Java高级、架构师必备!Lucene+ElasticStack入门至项目实战!

Java 架构 面试 程序人生 编程语言

双非本科猛斩6个offer,秘籍公开!

Java 程序员 架构 面试 后端

神马操作!Kafka 竟然宣布弃用 Java 8

收到请回复

Java kafka 后端 java8

TypeScript 中的 Index Signatures

Regan Yue

typescript ReganYue 10月月更

gitee上提交PR和issue流程和注意事项

Geek_6cdeb6

机器学习 深度学习 git

没想到!阿里技术大佬独家收藏的pring全家桶小册,竟被我意外发现!

Java 架构 面试 程序人生 编程语言

4年CRUD小职员,五面阿里艰苦经历(定薪45K),回馈一波心得体会

收到请回复

Java 程序员 面试 后端 面经

飞桨与海光人工智能加速卡DCU系列完成互证,助力国产AI加速 卡人工智能应用创新

百度大脑

人工智能 深度学习 飞桨

基于HarmonyOS分布式技术,他们让绘画体验更为出色

Geek_283163

鸿蒙

RUOYI 框架教程 15|若依框架中 Mysql 操作 | 日期处理

Java_若依框架教程

Java 技术 Ruoyi 框架 若依

Rtmp Message 与 Chunk格式

webrtc developer

RTMP

横空出世!IDEA画图神器来了,比Visio快10倍

收到请回复

Java IDEA idea插件

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