写点什么

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

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

关注

评论

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

Metasequoia 4 for Mac v4.8.6b激活版

iMac小白

item_get-1688商品详情在跨境电商中的营销策略创新

技术冰糖葫芦

API

融云观察:给 ChatGPT 加上声音和脸庞,AI 社交的多模态试验

融云 RongCloud

AI 设计 API 社交 ChatGPT

mac右键助手 MouseBoost Pro 3.3.4破解版

iMac小白

【第七在线】服装企业商品部关注的关键问题与解决策略

第七在线

【第七在线】国际市场扩张与商品计划:跨越地域的挑战与机会

第七在线

SecureFX for Mac(ftp文件传输工具)附注册码 v9.4.3破解激活版

mac

苹果mac Windows软件 SecureFX 文件传输客户端

浅析 ArrayList

不在线第一只蜗牛

Java 开发语言

华为云Astro,让业务专家秒变“技术大拿”

华为云PaaS服务小智

低代码 华为云

现在大火的低代码是什么?有哪些优势?

高端章鱼哥

低代码开发 应用程序 JNPF

React高手都会用的useMemo有什么用的?

互联网工科生

性能优化 React useMemo

如何又快又好、又便宜地开发体育赛事直播平台

软件开发-梦幻运营部

Integrity Plus for Mac:数据完整性校验的得力助手

iMac小白

虾皮商品评论接口(Shopee.item_review)|虾皮API接口指南

tbapi

shopee API 虾皮商品评论接口 虾皮商品评价接口 虾皮评论接口 shopee 商品评论接口

Navicat Premium for Mac(多协议数据库管理工具) 16.3.4中文破解激活版

mac

数据库管理工具 苹果mac Windows软件 Navicat Premium 16

【案例】第七在线商品组合计划赋能安德玛每一个加盟商精准计划

第七在线

2024年市场上最好的免费开源工单管理系统六强

爱吃小舅的鱼

开源 工单管理

每日一题:LeetCode-240. 搜索二维矩阵 II

Geek_4z9ami

Go 面试 算法 矩阵 LeetCode

热热热!开放原子开发者大会议题征集火爆!

开放原子开源基金会

Java 开源 程序员 开发者 算法

MongoDB中的分布式集群架构

EquatorCoco

分布式 索引 db 集群架构

“基于inBuilder低代码平台开源社区版的应用开发”创新赛获奖队伍公示

inBuilder低代码平台

「代码舞者」2023开放原子开发者大会——开源大侠秘闻

开放原子开源基金会

开源 开发者 算法

权威认可,天翼云云原生一体机iStack斩获“2023云原生企业TOP50”第一名

编程猫

博睿数据参与支持2023年度证券期货业标准研究课题获评“优秀”

博睿数据

【第七在线】媒介投产分析 Colony Brands每一个宣传画册运营产出收益

第七在线

使用TikTok云手机轻松拓展全球市场

Ogcloud

云计算 TikTok 手机云服务

海外云手机在跨境外贸中的作用

Ogcloud

云计算 跨境电子商务 跨境电商 电子商务

Tower for Mac注册激活版下载(强大的Git客户端)

iMac小白

Visio Viewer for Mac激活版 查看和编辑Visio文件

iMac小白

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