SpringBoot单元测试中XXXMapper为null
1. 假设你来面试~看图找问题

图中进行如下内容,最后在单元测试中userMapper为null而报错。
- 准备了一个
HelloController,其中通过userMapper进行了数据库交互并查询到数据列表; - 准备了一个
MockMvc,通过StandaloneSetup加载了一个HelloController进行单元测试;
2. 答案与解析
很多人第一反应是去排查图中的user()测试方法,首先任务Mock这里肯定没问题,但实际上,问题恰恰就仅仅出现在这里。先看看行之有效的修复:
- 准备了一个
WebApplicationContext中测试类内; - 准备了一个
MockMvc,通过WebAppContextSetup加载applicationContext进行单元测试;
其实,通过阅读MockMvc的源码可以得知,StandaloneSetup加载只会初始化Controller的底层的依赖,不会包括Component和其他用户的Bean,那么其中的userMapper自然也就没有被初始化了。
SpringBoot单元测试中XXXMapper为null
https://zhongshijie1995.github.io/posts/30003/