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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 12:49:50