Mockito:Java 测试中最常用的 Mock 框架
·
Mockito:Java 测试中最常用的 Mock 框架
Mockito 在 GitHub 上拿到了 15,431 个 Star。
Java 生态里做单元测试,绕不开 Mock 这件事。Mockito 就是干这个的,干了十几年,基本上是 Java Mock 框架的事实标准。
1、 它是干嘛的
一句话:在测试中模拟那些你不想真正调用的依赖。
数据库连接、远程接口、第三方服务,写单测的时候你不可能真的去调它们。Mockito 让你用几行代码创建一个假对象,控制它的返回值,验证它是否被正确调用。
2、 为什么选它
Java Mock 框架不止它一个,但 Mockito 占据了绝大部分市场。原因很直接:
- API 简洁,上手快。创建 Mock、设置行为、验证调用,三步搞定
- 社区活跃,文档齐全,Stack Overflow 上问题基本都能搜到答案
- 与 JUnit、Spring Test、Gradle、Maven 无缝集成
- 5.x 版本默认使用 inline mockmaker,支持 mock final 类和方法

3、 基本用法
创建一个 Mock 对象:
List mockList = mock(List.class);
when(mockList.get(0)).thenReturn("hello");
mockList.get(0); // 返回 "hello"
mockList.get(1); // 返回 null
验证方法是否被调用:
mockList.add("test");
verify(mockList).add("test");
Mock 一个外部服务:
UserService mockService = mock(UserService.class);
when(mockService.findById(1L)).thenReturn(new User("张三"));
// 在测试中注入 mockService,所有对 findById 的调用都会返回预设值
4、 版本演进
Mockito 目前到了 5.x。几个关键节点:
- 2.x:引入 MockitoJUnitRunner,改进 API 设计
- 3.x:要求 Java 8 以上
- 4.x:清理了大量废弃 API
- 5.x:默认使用 inline mockmaker,要求 Java 11 以上
同一时间只支持一个大版本,不向后回移修复。

5、 适合谁用
- 写 Java 单元测试、需要隔离外部依赖的开发者
- 搭建测试框架、需要统一 Mock 方案的团队
- 用 Spring Boot 做后端、想让测试更可控的工程师
离外部依赖的开发者
- 搭建测试框架、需要统一 Mock 方案的团队
- 用 Spring Boot 做后端、想让测试更可控的工程师
更多推荐

所有评论(0)