You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3.3.3集成测试失败求助(关联Hibernate 6.5.2)

Spring Boot 3.3.3 + Mockito 5.14.2 集成测试兼容性问题解答

确实有不少用户在使用Spring Boot 3.3.x搭配Mockito 5.x版本时遇到过完全相同的问题,核心原因是Hibernate 6.5.x的字节码增强逻辑与Mockito依赖的ByteBuddy版本存在兼容性冲突。

问题本质

Hibernate 6.5.2.Final(Spring Boot 3.3.3内置版本)引入了$$_hibernate_setUseTracker(boolean)这类动态生成的字节码方法,而Mockito 5.14.2使用的ByteBuddy版本在处理这类方法时存在逻辑冲突,最终导致JoinedSubclassEntityPersister无法实例化,进而引发EntityManagerFactory创建失败。

可行的临时解决方案

  • 回退Hibernate版本:如你所做的,将Hibernate Core版本指定为Spring Boot 3.2.2内置的6.4.1.Final,这是最直接且验证有效的临时修复方式。可以在构建文件中强制指定版本:
    <!-- Maven 示例 -->
    <dependency>
        <groupId>org.hibernate.orm</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>6.4.1.Final</version>
    </dependency>
    
  • 升级Mockito版本:将Mockito Core升级到5.15.0及以上版本,部分用户反馈该版本调整了ByteBuddy的适配逻辑,能够解决与Hibernate 6.5.x的兼容性问题。
  • 禁用Hibernate字节码跟踪器:如果业务场景允许,可在测试环境配置文件中添加以下配置,关闭Hibernate的字节码跟踪功能:
    # application-test.properties
    spring.jpa.properties.hibernate.bytecode.use_tracker=false
    
    注意:该配置可能会影响Hibernate的部分性能优化特性,需在测试环境验证业务逻辑不受影响后再使用。

官方进展

Spring Boot团队已关注到该兼容性问题,后续小版本(如3.3.4)可能会通过调整内置Hibernate版本或协调Mockito适配来彻底解决,建议关注Spring Boot官方发布说明。

内容的提问来源于stack exchange,提问作者julus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 02:45:57