Spring Boot测试加载ApplicationContext失败:找不到application.properties
application.properties的问题 看你贴的报错和测试代码,核心问题就是Spring启动时找不到/application.properties这个配置文件,导致解析SSPStarter配置类失败,进而ApplicationContext加载不起来。给你几个实用的排查和解决思路:
1. 先检查配置文件的存放位置
Spring Boot默认会从这几个地方找application.properties(优先级从高到低):
- 当前目录下的
config子文件夹 - 当前目录
- 类路径(classpath)下的
config包 - 类路径根目录
你得先确认你的application.properties是不是放在了classpath根目录或者上面说的其他合法路径里。如果是Maven/Gradle项目,正常主环境配置放src/main/resources/,测试环境的配置放src/test/resources/就行。
2. 手动指定配置文件路径(如果不在默认位置)
要是你的配置文件没在默认路径里,可以直接在@SpringBootTest注解里指定路径:
比如配置文件在classpath的config目录下:
@SpringBootTest( classes = {SSPStarter.class, SwaggerConfig.class}, properties = {"spring.config.location=classpath:/config/application.properties"} )
如果是本地磁盘的外部路径:
@SpringBootTest( classes = {SSPStarter.class, SwaggerConfig.class}, locations = "file:/Users/xxx/xxx/application.properties" )
3. 检查启动类SSPStarter的配置注解
你的测试类加载了SSPStarter作为启动类,得看看这个类上有没有用@PropertySource注解,如果有,要确认它指定的路径是不是正确的:
@SpringBootApplication @PropertySource("classpath:/application.properties") // 这里路径别写错! public class SSPStarter { // ... }
要是@PropertySource里的路径错了,肯定找不到文件。
4. 确认测试资源目录是否被正确识别
如果是测试环境专用的配置文件,得确保src/test/resources/这个目录在Maven/Gradle的配置里是被当作资源目录的。比如Maven的pom.xml里要有这段:
<build> <testResources> <testResource> <directory>src/test/resources</directory> </testResource> </testResources> </build>
要是没这段配置,测试的时候classpath里就不会包含测试资源目录的文件,自然找不到。
5. 清理缓存重新构建项目
有时候IDE缓存或者旧的构建产物会搞事情,导致资源文件没被正确复制到classpath里,不妨试试:
- 用命令行执行
mvn clean test(Maven项目)或者gradle clean test(Gradle项目),清掉旧产物再重新测试 - 在IDE里刷新项目(比如IntelliJ里点
File -> Reload All Maven Projects),确保资源文件同步到位
建议先从检查配置文件位置开始,这是最常见的原因。要是还不行,再挨个试上面的其他方法。
内容的提问来源于stack exchange,提问作者ShantiRadhkrishnan

