告别 @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?
@MockitoBean 是 Spring 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


