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

Spring Cloud Contract测试找不到@SpringBootConfiguration如何解决?

问题原因

报错Unable to find a @SpringBootConfiguration的核心是Spring Boot测试框架无法自动识别到项目中带@SpringBootApplication注解的主启动类,常见触发场景是测试类的包路径和主启动类的包路径不匹配,没有在自动扫描范围内。

解决步骤

方案1:显式指定启动类(推荐,兼容性最好)

直接在测试基类的@SpringBootTest注解中声明你的项目主启动类即可,假设你的主启动类名为Application.java,修改测试基类代码:

// 替换成你自己项目的主启动类全限定名
@SpringBootTest(classes = Application.class)
public abstract class RestBase extends TestBase {

    @Autowired
    private AccountHandler accountHandler;

    @BeforeEach
    public void setup() {
        RestAssuredWebTestClient.webTestClient(WebTestClient.bindToRouterFunction(
                new RouterConfig(accountHandler).routes()).build());

    }
}

方案2:调整测试类包路径

如果不想显式指定启动类,确保所有测试类所在的包是主启动类所在包的子包即可。比如主启动类在com.example包下,测试类放在com.example.rest、com.example.test这类子包下,Spring就能自动扫描到主启动类。

测试基类优化建议

你当前手动实例化RouterConfig的方式不符合Spring依赖注入规范,上下文已经托管了RouterConfig的Bean,你可以直接注入自动配置的WebTestClient简化代码,避免后续新增路由后还要手动修改测试基类:

@SpringBootTest(classes = Application.class)
@AutoConfigureWebTestClient
public abstract class RestBase extends TestBase {

    @Autowired
    private WebTestClient webTestClient;

    @BeforeEach
    public void setup() {
        RestAssuredWebTestClient.webTestClient(webTestClient);
    }
}

修改完成后重新执行mvn clean install,上下文就能正常加载所有配置(包含Liquibase、JPA、Testcontainer PostgreSQL配置),报错即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:51:03