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

SpringBoot测试报Failed to load ApplicationContext异常如何解决

问题现象

运行主应用测试类时持续抛出java.lang.IllegalStateException: Failed to load ApplicationContext异常,应用上下文加载失败。

相关代码

主启动类 Application.java

@SpringBootApplication
@ComponentScan(basePackages = { "com.aaa.abc","com.aaa.def" })
public class Application extends SpringBootServletInitilizer {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure (SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}

初始测试类 ApplicationTest.java

@SpringBootTest
class ApplicationTest {
    @Test
    void contextLoads() {
    }
}

已尝试修复方案

在测试类的@SpringBootTest注解中指定Application类的加载路径,修改后仍抛出相同异常,修改后代码如下:

@SpringBootTest(classes={com.aaa.Application.class})
排查方向与修复方案
  • 优先查看异常栈最底部的Caused by嵌套异常信息,外层的Failed to load ApplicationContext是通用报错,具体根因(比如Bean找不到、配置缺失、类拼写错误、数据库连接失败等)都会在最内层异常里明确标注。
  • 修正类名拼写错误:代码中继承的SpringBootServletInitilizer拼写有误,正确类名为SpringBootServletInitializer,需重新导入对应包org.springframework.boot.web.servlet.support.SpringBootServletInitializer,拼写错误会直接导致类加载失败。
  • 核对包扫描配置:如果主启动类Application存放在com.aaa包下,你手动配置的@ComponentScan仅扫描com.aaa.abc、com.aaa.def两个子包,若存在其他包下的Bean、配置类未被纳入扫描范围,就会触发上下文加载失败。如果没有特殊分包需求,可删掉手动配置的@ComponentScan,SpringBoot默认会扫描主启动类所在包及其所有子包下的组件。
  • 核对类路径配置:确认@SpringBootTest(classes = ...)中填写的Application类全限定名和实际存放路径完全一致,注意包名、类名大小写不要出错。
  • 核对配置文件加载:确认测试环境的application.yml/application.properties配置(比如数据库地址、中间件连接、端口配置等)正确,配置错误也会导致上下文启动失败。

正确的测试类参考写法:

@SpringBootTest(classes = Application.class)
class ApplicationTest {
    @Test
    void contextLoads() {
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:15:57