写点什么

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

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

关注

评论

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

记一次dr_auto_sync计划内的切换测试过程

TiDB 社区干货传送门

7.x 实践

区块链常见的软文推广媒体宣发方式有哪些?

区块链项目一站式包装孵化

给刚进入币圈的新人小白的几点建议

区块链项目一站式包装孵化

POST 方法详解:现代 Web 开发必备技能

Apifox

Web 后端 HTTP post API

一文了解 TiDB 8.0 新特性之 Pipelined DML

TiDB 社区干货传送门

新版本/特性解读 8.x 实践

小浣熊办公助手:让网站数据分析变得轻而易举

4ye

数据分析 办公小浣熊 小浣熊家族

纳斯达克大屏投放:品牌塑造的开始一环!

区块链项目一站式包装孵化

如何在币圈抓住新叙事,牛市的布局策略!

区块链项目一站式包装孵化

星辰考古:TiDB v3.x 忆水木

TiDB 社区干货传送门

版本升级 版本测评 新版本/特性解读

TiUP v1.16 发版,支持 PD 微服务

TiDB 社区干货传送门

版本升级 新版本/特性解读

备战牛市主升浪,我对本轮周期的阶段性思考

区块链项目一站式包装孵化

玩币归赵之币圈首富赵长鹏

区块链项目一站式包装孵化

易快报与E签宝完美对接,助力企业实现高效文件管理

聚道云软件连接器

案例分享

AI Agent框架(LLM Agent):LLM驱动的智能体如何引领行业变革,应用探索与未来展望

汀丶人工智能

人工智能 大模型 agent

iPaaS丨不同集成工具功能的重合性和相关性

RestCloud

RPA ETL 数据集成 ipaas

区块链技术如何改变供应链管理?

天津汇柏科技有限公司

区块链 供应链管理

【TiDB 8.1】 社区版尝鲜之集群离线部署-基于国产OS-openEuler22.03 SP3

TiDB 社区干货传送门

版本测评 新版本/特性发布 新版本/特性解读 8.x 实践

TP钱包如何上代币、收录LOGO(TokenPocket)tp钱包上传代币LOGO

区块链项目一站式包装孵化

如何做好一场老外露脸出镜的币安直播AMA?

区块链项目一站式包装孵化

泛娱乐出海新风口,视频云技术需要怎样的融合创新?

阿里云CloudImagine

云计算 音视频 视频云 泛娱乐出海 AIGC

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