> 技术文档 > 告别 @MockBean!在 Spring Boot 3.2+ 中使用 @MockitoBean 进行单元测试_org.springframework.boot.test.mock.mockito.mockbea

告别 @MockBean!在 Spring Boot 3.2+ 中使用 @MockitoBean 进行单元测试_org.springframework.boot.test.mock.mockito.mockbea

多年来,@MockBean 一直被广泛用于 Spring Boot 单元测试中来模拟依赖项。

然而,在 Spring Boot 3.2 中,@MockBean 由于性能和可维护性方面的问题已被标记为废弃

🔴 @MockBean 存在的问题

创建不必要的 Spring 上下文代理 → 拖慢测试执行速度
全局模拟 Bean → 可能在多个测试中产生副作用
未针对 Spring Boot 3.2 的测试改进进行优化

✅ 解决方案:使用 @MockitoBean

Spring Boot 3.2 引入了 @MockitoBean,它提供了:
更快的测试执行速度 - 直接集成 Mockito
更好的测试组件隔离
更可靠的单元测试体验

1️⃣ 什么是 @MockitoBean

@MockitoBeanSpring Boot 3.2 中的一个新注解,它是 @MockBean直接替代品

✔ 它为依赖项创建模拟实例
✔ 它与 JUnit 5 和 Mockito 有更好的集成
✔ 它不需要完整的 Spring 上下文重新加载

2️⃣ 将 @MockBean 替换为 @MockitoBean

让我们通过一个在服务测试中模拟存储库示例来演示。

📝 示例 1:使用 @MockBean 的旧方法(已废弃)

@SpringBootTestclass UserServiceTest {  @MockBean // ❌ 在 Spring Boot 3.2+ 中已废弃 private UserRepository userRepository; @Autowired private UserService userService; @Test void testGetUserById() {  User mockUser = new User(1L, \"张三\"); Mockito