开发中的填坑之路

866 阅读1分钟

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的根路径,所以找不到。