2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

Linux之df命令

入门小站

Linux

Netty浅析

CodeWithBuff

Java Netty 源码剖析 I/O

模块二作业

king

模块二作业 微信朋友圈高性能复杂度分析

君子意如何

「架构师训练营第 1 期」

Vue进阶(四十三):Vuex之Mutations详解

No Silver Bullet

Vue 7月日更 mutations

架构训练营模块二作业

以吻封笺

秘乐魔方短视频系统开发简介

获客I3O6O643Z97

短视频挖矿

PHA挖矿系统源码开发介绍

获客I3O6O643Z97

PHA矿机挖矿 PHA质押挖矿

大数据训练营一期0711作业

朱磊

模块二作业

秀聪

架构实战营

架构实战营模块 2 作业

zlz

架构实战营模块二作业

A-领悟 Lifetruth‖

#架构实战营

Vue进阶(九十七):对象动态添加属性和值

No Silver Bullet

Vue set 7月日更

Pandas高级教程之:window操作

程序那些事

Python 数据分析 pandas 程序那些事

浪潮云洲走进包头 展示特色产业“触网”路径

工业互联网

在线XML转CSV工具

入门小站

工具

分析微信朋友圈的高性能复杂度

feitian

架构模块2 作业

柱林

微信朋友圈的高性能复杂度分析

tjudream

架构 高性能 朋友圈

Rust从0到1-并发-状态共享

rust 并发 Concurrency 状态共享 Shared-State

模块一作业-架构训练营

零度

「架构师训练营第 1 期」

架构实战营 -- 模块二

小牧ah

架构实战营

模块2作业G20210698020270

哆啦A萌

WICC 2021即将召开 荔枝将揭秘高音质体验之关键技术

融云 RongCloud

调研字节码插桩技术,用于互联网分布式系统监控设计和实现!

小傅哥

Java asm javaagent 字节码增强 系统监控

在线教育,百鬼夜行?

白洞计划

【架构实战营】模块二作业

Abner S.

架构实战营 #架构实战营

【Flutter 专题】82 初识 Flutter Stream (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

ACM金牌选手算法讲解《线性表》

编程熊

算法 LeetCode 线性表 数据结构与算法

Python OpenCV 图像开闭操作,图像处理取经之旅第 39 篇

梦想橡皮擦

7月日更

手写插入排序算法

实力程序员

程序员 算法 排序 实力

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