写点什么

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

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

关注

评论

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

模块四

浮生若梦

前端质量提升利器-马可代码覆盖率平台

vivo互联网技术

前端 代码 平台架构

架构实战营模块四作业

张扬

1 月月更|盘点 2021|推荐学Java——数据表操作

逆锋起笔

Java MySQL 数据库表 多表查询 关联查询

深入理解static关键字

编程江湖

static关键字

AI开发平台系列2:集成式机器学习平台对比分析

Baihai IDP

AI

Rust - mmap 简单写性能比较测试

rust Mmap

java集合【13】——— Stack源码分析走一波

秦怀杂货店

Java 源码分析 集合

请说出4种不使用第三方变量交换两个变量值的方法

阿Q说代码

位运算 1月月更 交换变量

云单元架构,如何赋能数字化转型呢?

博文视点Broadview

谁说count(*) 性能最差,我需要跟你聊聊

华为云开发者联盟

函数 count 字符 数据表

模块四 - 千万级学生管理系统考试试卷存储方案

圈圈gor

架构实战营 「架构实战营」

Java&Go高性能队列之LinkedBlockingQueue性能测试

FunTester

Disruptor 性能测试 消息队列 FunTester 高性能消息队列

模块四

黄秀明

「架构实战营」

架构实战营 - 模块 4 - 作业

Pyel

「架构实战营」

Flutter:创建一个自动调整大小的 TextField

坚果

flutter 1月月更

ReactNative进阶(十):WebView 应用详解

No Silver Bullet

webview React Native 1月月更

查询 MySQL 字段注释的 5 种方法!

王磊

【Spring专场】「MVC容器」不看源码就带你认识核心流程以及运作原理

码界西柚

springmvc Spring Framework Spring MVC 1月月更

表设计之数据类型优化

Ayue、

数据库 1月月更

前后端分离 -- 深入浅出Spring Boot + Vue实现员工管理系统 Vue如此简单~

Bug终结者

Vue 前后端分离 Java 分布式 elementUI

试卷存储和访问架构设计

supermenG

架构师训练营 4 期

Vue的动态组件 & 异步组件

编程江湖

Vue

在线HTML5,CSS3,VueJS,jQuery运行测试练习工具

入门小站

工具

中年人对酒的看法

wood

300天创作

浅谈数据中台和DataFabric的差异

Kafka中文社区

netty系列之:JVM中的Reference count原来netty中也有

程序那些事

Java Netty 程序那些事 1月月更

Hive UDF,就这

华为云开发者联盟

sql 函数 UDF Hive UDF 用户自定义函数

美团李凯揭秘数据库发展三大趋势 | TiDB Hackathon 评委访谈

PingCAP

教你如何在Spark Scala/Java应用中调用Python脚本

华为云开发者联盟

Python spark 脚本 Spark Scala Spark java

性能场景之压测策略设计

zuozewei

性能测试 性能分析 1月月更

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