Java单元测试启动踩过的坑

2022/3/3 1:17:33

本文主要是介绍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



这篇关于Java单元测试启动踩过的坑的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程