QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

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

关注

评论

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

聚四方之力,合四方之需:智能云网的持续进化

脑极体

长安链源码分析启动(4)

长安链

在线图片隐写术加密传递数据

入门小站

工具

Prometheus 实战 (1):容器安装

Grafana 爱好者

Prometheus

数据、算力强支撑,佳格天地联合华为云打造农业农村大数据解决方案

IT资讯搬运工

易周金融分析 | 银行理财市场渐趋理性;“睡眠信用卡”持续清退

易观分析

金融 银行 信用卡

Spring源码分析(二)Spring怎么扩展解析xml接口的

石臻臻的杂货铺

spring 源码 8月月更

隗华:OceanBase 企业服务助力客户实现业务无忧

OceanBase 数据库

YonBuilder移动开发 AVM框架 封装车牌号输入键盘组件

YonBuilder低代码开发平台

程序员 App 移动开发 多端开发

基于龙蜥操作系统指令加速,降低云原生网关的构建成本

阿里巴巴云原生

阿里云 云原生 云原生网关 龙蜥

低代码是什么意思?低代码平台的技术特点是什么?

优秀

低代码

[JS入门到进阶] 手写解析URL参数的工具,并部署。用起来又快又爽!

HullQin

CSS JavaScript html 前端 8月月更

1. 操作系统—概述

小呆鸟

操作系统 8月月更

前端食堂技术周刊第 50 期:TypeScript 4.8、Deno 1.25、Terminal Gif Maker、CSS :has() 伪类、Deno ch

童欧巴

APICloud AVM 封装验证码输入框组件

YonBuilder低代码开发平台

程序员 前端开发 低代码开发 多端开发

阿里云金融创新峰会云原生分论坛圆满举办,加速金融行业落地云原生

阿里巴巴云原生

阿里云 云原生 金融行业

Sring源码解析(一)Spring是怎么读取配置Xml文件的

石臻臻的杂货铺

spring 源码 8月月更

测试需求平台2-搭建前后端分离github托管项目

MegaQi

测试平台开发 9月月更

C/C++普通函数与函数模板的区别,调用规则,模板局限性

CtrlX

c c++ C# 8月月更

AAX影响力实验室探究加密产业对各行业的影响

股市老人

2. 操作系统—中断、异常、系统调用

小呆鸟

操作系统 操作 8月月更

3. 操作系统—物理内存管理

小呆鸟

操作系统 操作 8月月更

长安链源码分析启动(5)

长安链

前端高频面试题(附答案)

helloworld1024fd

JavaScript 前端

9月17日 杭州站 | Serverless Developer Meetup 开启报名

阿里巴巴云原生

阿里云 Serverless 云原生

开源一夏 | 一场由serialVersionUID 引发的线上问题

六月的雨在InfoQ

开源 serialVersionUID transient Serializable接口 8月月更

SQL改写系列九:外连接转内连接的常见场景与错误-2

OceanBase 数据库

K-进制数(简洁 图解)

Five

算法题 8月月更

二层交换机与路由器的区别

阿柠xn

计算机网络 交换机 路由器 8月月更

后疫情时代,传统制造业如何打破生产协同瓶颈?

IT资讯搬运工

常见性能瓶颈分析方法

穿过生命散发芬芳

8月月更 性能瓶颈

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