写点什么

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

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

关注

评论

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

新能源锂电池极片制造设备如何实现故障智能诊断?

PreMaint

智能诊断 故障诊断 新能源 设备健康管理

4步消除漏洞积压

SEAL安全

漏洞修复 软件供应链安全 漏洞管理 11月月更

详解React的Transition工作原理原理

夏天的味道123

React

知识蒸馏相关技术【模型蒸馏、数据蒸馏】以ERNIE-Tiny为例

汀丶人工智能

nlp 知识蒸馏 11月月更

工作多年,技术认知不足,个人成长慢,职业发展迷茫,该怎么办?

霍格沃兹测试开发学社

从 0 开始学 Python 自动化测试开发(二):环境搭建

霍格沃兹测试开发学社

京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用

京东科技开发者

联邦学习 同态加密 隐私计算 加密算法 多方安全计算

技术分享 | 如何确保API 的稳定性与正确性?你只需要这一招

霍格沃兹测试开发学社

【JVM】关于JVM,你需要掌握这些 | 一文彻底吃透JVM系列

冰河

Java 性能优化 JVM Java虚拟机 系统编程

工作多年,技术认知不足,个人成长慢,职业发展迷茫,该怎么办?

测试人

软件测试 自动化测试 测试开发

CSS写一个圣诞树Chrome浏览器小插件

肥晨

11月月更 css写圣诞树 Chrome插件

CnosDB 2.0 产品发布会预告:一切为了万物智联,用 Rust 打造云原生时序数据库

CnosDB

时序数据库 开源社区 CnosDB CnosDB 2.0发布会

AI 应用的全流程存储加速方案技术解析和实践分享

百度Geek说

人工智能 AI 存储系统

解密GaussDB(for Influx) :让智能电网中时序数据处理更高效

华为云开发者联盟

数据库 华为云 企业号十月 PK 榜

ironSource 与 Sensor Tower 宣布达成战略合作,共同拓展应用市场增长潜力

极客天地

Istio Ambient Mesh七层服务治理图文详解

华为云开发者联盟

云原生 后端 华为云 企业号十月 PK 榜

【LeetCode】二叉树最大宽度Java题解

Albert

算法 LeetCode 11月月更

Java应用在docker环境配置容器健康检查

程序员欣宸

Java Docker 11月月更

这可能是你需要的React实战技巧

夏天的味道123

React

华为云从入门到实战 | 云速建站服务与企业主机安全服务

TiAmo

华为 华为云 11月月更

Spring Boot 实现接口幂等性的 4 种方案

小小怪下士

Java spring springboot

读懂React原理之调和与Fiber

xiaofeng

React

修改ElementUI样式

源字节1号

软件开发 前端开发 后端开发 小程序开发

【愚公系列】2022年11月 微信小程序-日期时间组件封装

愚公搬代码

11月月更

更轻量的百度百舸,CCE Stack 智算版发布

Baidu AICLOUD

AI工程化 高性能计算 异构计算 百度百舸

自学前端达到什么水平才能找到工作,来看这套前端学习路线图

千锋IT教育

React-Hook最佳实践

xiaofeng

React

细说React组件性能优化

xiaofeng

React

校招面试真题 | 测试流程大概是什么?

霍格沃兹测试开发学社

JavaScript, ABAP 和 Scala 里的尾递归(Tail Recursion)

汪子熙

JavaScript 编程语言 尾递归 abap 11月月更

网站停服、秒杀大促…解析高可用网站架构云化

华为云开发者联盟

云计算 后端 华为云 企业号十月 PK 榜

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