1.2 环境搭建
环境搭建
为快速启动Mockito测试,本节详细说明如何在不同构建工具中配置Mockito与JUnit 5,并验证环境是否正常工作。
1. 前置条件
- JDK版本:
- Mockito 5.x 需 JDK 11+
- Mockito 4.x 兼容 JDK 8+(适用于旧项目)
- 构建工具:
- Maven 3.6+ 或 Gradle 7.x+
- IDE支持:
- IntelliJ IDEA / Eclipse / VS Code(需安装Java插件)
2. Maven 配置
在 pom.xml
中添加以下依赖:
<properties>
<junit-jupiter.version>5.10.0</junit-jupiter.version>
<mockito.version>5.12.0</mockito.version>
</properties>
<dependencies>
<!-- JUnit 5 核心依赖 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit-jupiter.version}</version>
<scope>test</scope>
</dependency>
<!-- Mockito 核心库 -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
<!-- Mockito 对 JUnit 5 的扩展支持 -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
3. Gradle 配置
在 build.gradle
中添加:
dependencies {
// JUnit 5
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'
// Mockito
testImplementation 'org.mockito:mockito-core:5.12.0'
testImplementation 'org.mockito:mockito-junit-jupiter:5.12.0'
}
test {
useJUnitPlatform() // 启用JUnit 5测试引擎
}
4. IDE 配置验证
IntelliJ IDEA
- 创建测试类:右击源码目录 →
New → Java Class
→ 类名以Test
结尾(如UserServiceTest
)。 - 自动导入Mockito:
- 输入
mock(List.class)
→ 按Alt+Enter
自动导入org.mockito.Mockito.mock
。
- 输入
- 运行测试:点击测试方法旁的绿色箭头。
Eclipse
- 安装JUnit 5插件:
Help → Eclipse Marketplace → 搜索 "JUnit 5" → 安装 "JUnit 5 Support"
。
- 创建测试类:
File → New → JUnit Test Case
→ 选择JUnit 5。
5. 环境验证测试
创建第一个Mockito测试类,验证环境是否正常:
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;
class EnvironmentValidationTest {
@Test
void testMockitoBasicFunctionality() {
// 1. 创建Mock对象
List<String> mockList = mock(List.class);
// 2. 配置方法桩(Stubbing)
when(mockList.size()).thenReturn(100);
// 3. 调用被测方法
int size = mockList.size();
// 4. 断言验证
assertEquals(100, size, "Mock对象的size()应返回预设值100");
// 5. 行为验证
verify(mockList).size(); // 验证size()被调用一次
}
}
预期结果:测试通过,无错误日志。
6. 常见问题排查
问题现象 | 原因与解决方案 |
---|---|
NoSuchMethodError | 依赖版本冲突 → 统一JUnit 5和Mockito版本(如Mockito 5.x + JUnit 5.x)。 |
@Mock注解无效 | 未启用Mockito扩展 → 在测试类上添加 @ExtendWith(MockitoExtension.class) 。 |
Gradle测试未执行 | 未配置JUnit平台 → 确保build.gradle 中包含 test { useJUnitPlatform() } 。 |
静态导入失败 | 手动添加静态导入:import static org.mockito.Mockito.*; 和 import static org.junit.jupiter.api.Assertions.*; 。 |
7. 进阶配置(可选)
- 启用严格Mock模式:
在测试类初始化时添加以下代码,检测冗余的Mock配置:@BeforeEach void setup() { Mockito.lenient().when(...); // 显式标记允许宽松配置 }
- 多模块项目配置:
在父模块的pom.xml
中统一管理Mockito版本:<dependencyManagement> <dependencies> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-bom</artifactId> <version>5.12.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
8. 验证成功标志
- 测试控制台输出绿色成功标记(IDE或构建工具)。
- Maven执行命令验证:
mvn clean test -Dtest=EnvironmentValidationTest
- Gradle执行命令验证:
./gradlew test --tests EnvironmentValidationTest
完成环境搭建后,即可进入核心API学习,开始编写真实的单元测试用例。