昨天对一个SpringBoot项目进行junit单元测试,直接在test文件夹里创建了test类,添加了@RunWith(SpringRunner.class)和@SpringBootTest注解后,运行测试类,发现会报错,无法找到@SpringBootConfiguration,最后通过查找资料发现是测试类没有找到程序入口,无法启动。
解决方法
1.修改test类的包路径
将test类的包路径设置与main文件夹相同的结构
原理
@SpringBootTest会自动查询@SpringBootConfiguration,在测试类路径下搜索@SpringBootConfiguration。然而java源代码的类路径为主类下的ServerApplication的@SpringBootApplication中引用了@SpringBootConfiguration,这里才有@SpringBootConfiguration注解。因此导致无法查询到@SpringBootConfiguration注解,导致无法加载springboot启动类ServerApplication。
2.手动指定SpringBoot启动类路径
在注解中指定,@SpringBootConfiguration(classes = xxx.class)