写点什么

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

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

关注

评论

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

得物 ZooKeeper SLA 也可以 99.99%丨最佳实践

阿里巴巴云原生

zookeeper 阿里云 云原生

销帮帮CRM与电商运营增效的关系?

RestCloud

CRM 业务系统 APPlink 自动化集成

活动回顾丨云原生开源开发者沙龙北京站回放 & PPT 下载

阿里巴巴云原生

阿里云 云原生

C++ 构造函数实战指南:默认构造、带参数构造、拷贝构造与移动构造

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

德科集团调研2,000名高管发布报告

财见

一文读懂链游!探索链游的前世今生,区块链与游戏结合的新兴趋势

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

NFT卡牌质押分红模式开发技术讲解分析

区块链软件开发推广运营

区块链开发 链游开发 NFT开发 公链开发 区块链开发DAPP开发

【教程】iOS应用上架流程详解

时装品牌数字化商品管理:突破实施难点与策略解析

第七在线

2024年最新仿斗鱼、虎牙电竞游戏直播平台,源码演示案例

软件开发-梦幻运营部

Giants Planet 宣布推出符文,建立在坚实价值的基础上

威廉META

从0到1:社区论坛小程序开发笔记

CC同学

区块链交易所技术开发架构解析 交易所开发团队

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

4+1 视图建模及架构设计工程实践

智在碧得

软件测试 性能测试 架构设计 软件建模 架构建模

当AI文曲星,照耀学海

白洞计划

AI

软件测试学习笔记丨Selenium文件上传弹框处理

测试人

软件测试

终于有人讲清楚了什么是云原生

张磊

DevOps 微服务 云原生 容器化

SLS 查询新范式:使用 SPL 对日志进行交互式探索

阿里巴巴云原生

阿里云 云原生 日志服务

Gather:基于 DePIN 体系构建的 Web3 社交生态

股市老人

vue-manage-system 版本更新,让开发更加简单

--linshuai

后台管理系统 Vue 3 Element Plus

区块链钱包开发指南: 探究区块链钱包开发涉及

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

创作者变身知识智能体,AI时代的“超级个体”

脑极体

AI

【JavaScript】微信小程序:高效性能优化策略与实践

智在碧得

软件测试 性能测试 JavaScrip 功能测试 软件测试工具

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