写点什么

使用 Mockito 1.5 监视普通对象

  • 2008-09-22
  • 本文字数:726 字

    阅读完需:约 2 分钟

Mockito 是一个针对 Java 的 mocking 框架。它与 EasyMock 和 jMock 很相似,但是通过在执行校验什么已经被调用,它消除了对期望行为(expectations)的需要。其它的 mocking 库需要你在执行记录期望行为(expectations),而这导致了丑陋的初始化代码。

正如 Mockito 用户、软件工程师 Hamlet D’Arcy 在其博客中所说,无需期望行为(expectations)是个大成就:

“Mockito 真的不需要期望行为,这简化了单元测试。从个人角度来说,由于该原因,我更喜欢 Mockito API 而不是 EasyMock API。”

ThoughtWorks 的 Ketan Padegaonkar 也对 Mockito 的独特语法赞赏有加:

“它的语法看起来比 JMock 的好多了,会让人一见钟情;我现在已经迷上测试了。”

Mockito1.5 版增加了“监视”非 mock 对象的能力,这是通过验证对其特定方法的调用实现的。例如:

List list = new LinkedList();
List spy = spy(list);“spy”变量现在作为 list 对象的句柄。它可被看作一个 mock 对象。例如我们可以用 stub 对其 size 方法进行处理:

stub(spy.size()).toReturn(100);我们还可以调用并验证普通的方法:

spy.add("one");
verify(spy).add("one");另一个改进就是可读性更好的桩语法。例如:

stub(obj.someMethod()).toReturn(result);可写做:

doReturn(result).when(obj).someMethod();这与旧式写法长度一样,但可读性更好并且括号也少了。除了 doReturn(),还有 doThrow()、doAnswer() 及``doNothing() 期望行为。

Mockito 的其他有用的特性包括:

  • 模拟具体类和接口的能力
  • 客户化参数匹配器
  • 顺序验证
  • 干净的堆栈跟踪

上手 Mockito 就如同将一个 JAR 文件加到 classpath 中一样简单。请访问 Google Code project 以了解安装说明、文档及更多代码示例。

查看英文原文: Mockito 1.5 spies on plain objects

2008-09-22 05:301950
用户头像

发布了 88 篇内容, 共 274.1 次阅读, 收获喜欢 9 次。

关注

评论

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

“程”风破浪的开发者|区块链与Web3.0辨析

timerring

区块链 Web3.0 10月月更 “程”风破浪的开发者 Web2.0

AfterShip 国际化获客冷启动经验:痛点、借力、连接

B Impact

如何提高Docker容器的安全性

乌龟哥哥

10月月更

JS事件,你真的懂吗(捕获,冒泡)?

乌龟哥哥

10月月更

数据湖(八):Iceberg数据存储格式

Lansonli

数据湖 10月月更

私有云建设思路

阿泽🧸

私有云 10月月更

阿里云无影向RPA开闸,金智维、影刀、弘玑已落地|生态商机

B Impact

golang中的字符串

六月的

golang 字符串

一起学习 Go 语言设计模式之设计模式概述

宇宙之一粟

设计模式 Go 语言 10月月更

liunx:进程概念

雪芙花

c c++ 10月月更

开源免费!自己动手撸一个在线云盘!

Jackpop

ZooKeeper应用案例

穿过生命散发芬芳

zookeeper 10月月更

2022-10-22:以下go语言代码输出什么?A:moonfdd1;B:编译错误;C:运行时 panic。 package main import “fmt“ func main() {

福大大架构师每日一题

golang 福大大 选择题

中东地区被低估,沙特偏好企业服务和云,新加坡稳定,东南亚复杂|出海

B Impact

“程”风破浪的开发者 | 基建及团队建设的方法论

甜点cc

团队管理 学习方法 基建 “程”风破浪的开发者

Web3.0杂谈-#008(55/100)

hackstoic

Web3.0

git fetch&pull讲解 | Git

Appleex

git

再聊加班的感受

GeekYin

成长感悟

2022年中国数字疗法市场洞察

易观分析

医疗

微服务的常见架构方式

乌龟哥哥

10月月更

【web 开发基础】PHP 快速入门(7)-PHP 运算符之比较运算符详解

迷彩

10月月更 PHP基础 比较运算符

趁年少,多读书

暮春零贰

读书笔记 10月月更

一款轻巧快速的跨平台文档阅读器!

Jackpop

“程”风破浪的开发者|元宇宙?Are you Sure?

六月的雨在InfoQ

虚拟世界 平行世界 元宇宙 10月月更 “程”风破浪的开发者

云计算商业周期超过其他产业,技术的天花板是商业机遇

B Impact

C++进阶之哈希(unordered_map/set的使用及其模拟)

雪芙花

c c++ 10月月更

[HCTF 2018]WarmUp题解(较为详细的)

d0ubleU0x00

Web CTF 每日一题 10月月更

消息推送渠道那么多,该怎么设计消息中心?

产品海豚湾

产品经理 产品设计 消息系统 产品架构 10月月更

C++精通之路:红黑树的应用(模拟实现map/set)

雪芙花

c c++ 10月月更

【愚公系列】2022年10月 Go教学课程 036-类型断言

愚公搬代码

10月月更

使用Mockito 1.5监视普通对象_Java_Matthew Bass_InfoQ精选文章