百木园-与人分享,
就是让自己快乐。

Java单元测试启动踩过的坑

在某个springboot项目用junit做单元测试时,调用启动类时总是报nosuchbeandefinition错误,查看日志发现是rpc-client.xml文件中的dubbo引用类未注入spring容器,怀疑是rpc-client.xml文件未被识别。一开始以为是配置@ImportResource(classpath:rpc-client.xml)的组件类未被注入,后面通过在该组件类中生成Bean对象,并在生成Bean的方法中打断点,发现程序能够到达断点,说明该组件类是被成功注入的,后面以为文件的路径没有写对,遂将classpath改成base/rpc-client.xml(因为xml文件放在resources/base文件夹下),结果运行时反而报找不到该路径的错误。后面通过别人的博客找到答案:

使用Gradle test任务执行测试类时,会优先使用test模块的资源文件,对于main模块与test模块均存在的同名资源文件,会使用test模块中的资源文件;对于仅在main模块中存在的同名资源文件,会使用main模块中的资源文件。

因为项目中main模块和test模块都有resources/base/rpc-client.xml文件,其中main模块中的rpc-client.xml文件中有dubbo引用类的声明,而test模块中的rpc-client.xml的内容是空的,没有dubbo引用类的声明,导致Test任务启动时,使用了空的test模块的资源文件,因此没有dubbo类注入Spring容器,因此也就找不到bean定义了。事实也是如此,当删除了test模块中的rpc-client.xml空文件后,执行Test任务时启动类就能正常运行不再报错了。

参考:https://blog.csdn.net/a82514921/article/details/108029162


来源:https://www.cnblogs.com/dmzxxmeng/p/15957609.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » Java单元测试启动踩过的坑

相关推荐

  • 暂无文章