springboot单元测试无法获取到@ImportResource指定的配置文件
- 问题描述
通过AppApplication正常启动项目,@SpringBootTest单元测试却启动不了 - 分析
报错显示无法找到@ImportResource指定的配置文件中申明的Bean,target/test-classes目录下确实没有,于是手动复制一下,正常启动,但这种解决方案很难受,只要配置文件有修改,就需要同步复制到test/resources下,springboot应该不会这么傻,google一阵发现有人通过maven插件自动进行复制,还是觉得不够优雅。 - 解决
在src/java/resources下新建目录,将xml文件放进去,单元测试正常启动。这个问题是由spring resource寻找机制决定的,首先将配置的path路径和最后的文件匹配名分开,然后去寻找path,之后在path下寻找resources。对于classpath:spring*.xml这种格式来说,dir就是""这样获取出来的path是test-class的根路径,所以找不到。