1. 概述
Mockito 是一个流行的Java单元测试Mock框架,用于接口和数据模拟。本文我们将快速介绍Mockito的基本使用,详细用法请查阅我们的Mockito系列教程。
2. 依赖安装
使用前需要在您的构建工具中引入 mockito-core
库,对于 Gradle 用户:
repositories { mavenCentral() }
dependencies { testImplementation "org.mockito:mockito-core:3.+" }
对于 Maven 用户:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.12.4</version>
<scope>test</scope>
</dependency>
对于 Spring Boot 用户,spring-boot-starter-test
中已经集成好了Mockito,无需配置。
最新版本请前往 Maven 中央仓库查看。
3. 快速使用
import static org.mockito.Mockito.*;
// 创建mock对象
// 你可以mock具体的类型,不仅只是接口
List mockedList = mock(List.class);
// 对于高版本Mockito 4.10.0+,可以写的更简洁
// List mockedList = mock();
// 下面添加测试桩(stubbing),指定mock的行为
// ”当“ 调用 mockedList.get(0) 返回 "first"
when(mockedList.get(0)).thenReturn("first");
// 下面代码将打印 "first"
System.out.println(mockedList.get(0));
// 下面将打印 "null",因为 get(999) 没有被打桩
System.out.println(mockedList.get(999));
上面示例,首先我们使用 Mockito 中的 mock
静态方法创建mock对象。或使用 @Mock 注解,详情参考我们的这篇文章
通过 when()/given()
指定mock行为。例如上面当调用 mockedList.get(0) 将返回 "first",这一过程专业术语叫做“打桩”(stubbing)。
除了 mock()/@Mock
,还可使用 spy()/@Spy
,两者区别是 spy 是部分mock,如果不打桩执行的是真实的方法。
使用 @InjectMocks 注解实现依赖注入,自动将mock/spy对象注入到被测试对象中。详情参考我们的这篇文章
4. 总结
本本文我们简单介绍了Mockito的基本使用,进一步学习请前往我们的Mockito系列教程。