写点什么

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

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

关注

评论

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

谈谈对分布式事务的一点理解和解决方案

Throwable

分布式 分布式事务 架构设计

3W字干货深入分析基于Micrometer和Prometheus实现度量和监控的方案

Throwable

Java 监控 Grafana Prometheus springboot

修炼我们的智慧之眼

J.Smile

认知提升

如何搭建Hive 环境

Rayjun

大数据 hive

关于架构的几件小事:架构概述(1)

北风

架构 架构设计 架构师 架构设计原则

不会有人还不知道全文检索工具Lucene怎么用吧?文字长文教程

给你买橘子

Java 搜索引擎 lucene 程序员 开发工具

数据分析之AB testing实战(附Python代码)

JackTian

Python 编程 程序员 数据分析 AB testing实战

架构师训练营第六周作业

烟雨濛濛

list vs tupple

Leetao

Python 数据结构 Python基础知识

云原生实践系列:概述

孤岛旭日

Serverless 微服务 Service Mesh 服务架构

架构师训练营第六周作业

Melo

看动画学算法之:排序-冒泡排序

程序那些事

算法 动画 排序算法 轻松学

DolphinScheduler-1.3.0-dev功能体验

Eights

大数据 hadoop

架构师训练营第六周总结

陈靓-哲露

架构师训练营第六周总结

烟雨濛濛

北京区块链规划重点发展海淀朝阳通州等区,加大对代币监管力度

CECBC

北京行动计划 四个高地 需求导向 为政务服务

【计算机网络】网络层——路由器与路由选择协议

烫烫烫个喵啊

计算机网络 网络层

“新基建”来了!云南三年投资3776亿!

CECBC

Newbe.Claptrap 框架中为什么用 Claptrap 和 Minion 两个词?

newbe36524

Docker .net core netcore ASP.NET Core

玛雅密码社区不忘初心 共筑未来通证新经济

Geek_116789

ARST Week7

时之虫

ARTS 打卡计划

基础篇:Object对象

csc

Java Java 25 周年

百万级别数据Excel导出优化

Throwable

架构设计 springboot

SpringBoot2.x入门:应用打包与启动

Throwable

springboot

iOS - CollectionViewCell对应不同flow layout的实例

teoking

ios

大话设计模式 | 4. 装饰模式

Puran

C# 设计模式

基础篇:JAVA基本类型

csc

Java Java 25 周年

11个提高产品经理工作效率的必备工具,果断收藏

马踏飞机747

大数据 设计 产品经理

Vagrant 快速入门

FeiLong

vagrant

并行流ParallelStream中隐藏的陷阱

Throwable

Java

SpringBoot 入门:02 - 实现 MVC

封不羁

Java spring springboot

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