Spring Boot 3.3.4升级至3.4.5后,多配置集成测试中@SpringBootTest(classes = SetupA)加载错误配置的问题
Spring Boot 3.3.4升级至3.4.5后,多配置集成测试中@SpringBootTest(classes = SetupA)加载错误配置的问题
最近把项目的Spring Boot版本从3.3.4升级到3.4.5后,碰到了个棘手的集成测试问题,想请教下大家:
我们项目里有两套集成测试的配置环境——SetupA和SetupB,每套环境都需要启动对应的第三方容器,这些容器的初始化逻辑我写在了各自Spring Boot启动类的静态代码块里。
给大家看一下SetupA的代码示例:
@SpringBootApplication public class SetupA { public static void main(String[] args) { SpringApplication.run(SetupA.class, args); } static { // 初始化SetupA专属的容器,比如特定版本的Redis、消息队列等 System.out.println("正在初始化SetupA所需容器"); } }
SetupB的结构和这个类似,静态块里是它自己的容器初始化逻辑。
在3.3.4版本时,我用@SpringBootTest(classes = SetupA.class)来跑对应测试,只会触发SetupA的静态块,加载对应的配置和容器,一切正常。但升级到3.4.5之后,怪事发生了:跑SetupA的测试时,SetupB的静态块居然也被执行了,导致两个容器启动冲突,测试直接报错。
我初步怀疑是Spring Boot在测试上下文加载的机制上有了变动,但还没找到具体原因。有没有朋友遇到过类似的问题?或者有没有大佬能指点下,怎么让@SpringBootTest精准加载指定的配置类,避免触发其他配置类的静态代码块?
内容来源于stack exchange
相关产品推荐
相关产品推荐

