近日在制作项目的途中进行了单元测试,但是遇到了
NullPointerException
空指针异常的问题,故作此记录
1、异常描述
- 因为前端尚未搭建好界面,因此在后端业务逻辑写好之后便通过【SpringBoot单元测试】去做了一个测试,但是一开始测试的时候便引发了 空指针异常 的问题,记得之前有遇到过但是没有做记录,现今在遇到后进行了相关排查,发现了问题,故记录了下来
2、异常排查
- 通过看到下面的异常信息
"this.userMapper" is null
那我第一时间肯定是去查看这个通过依赖注入的UserMapper
java
@Autowired
private UserMapper userMapper;
① 类注解检查
- 首先我去检查的就是这个
@Mapper
五大类注解,只有在当前的Mapper类加上了这个注解后才可以将其交托给Spring进行管理,此时依赖注入才会起作用
② 映射文件.xml格式配置检查
- 第二块去检查的就是这个映射的
.xml
文件,【namespace】命名空间是否正确,以及.xml
文件的格式是否正确
③ application.yml配置文件的检查
- 但是在前两步都没问题的情况下,我又再次去检查了SpringBoot的 配置文件 ,因为有关
myBatis
的文件映射就是靠这里进行配置的
但是在排查了以上这些问题之后均没有发现问题
- 那此时继续回本溯源,既然我们使用的是SpringBoot单元测试,那么就去单元测试里找问题吧,结合 SpringBoot面向注解开发 这个理念,于是我便注意到了
@SpringBootTest
这个注解
- 那在加上这个注解之后我们再来看看空指针的异常是否解决
java
@SpringBootTest
class UserMapperTest {
@Autowired
private UserMapper userMapper;
@Test
void login() {
String username = "admin";
UserInfo userInfo = userMapper.login(username);
System.out.println(userInfo);
}
}
- 可以看到,在加上
@SpringBootTest
这个注解后单元测试就很顺利地通过了
以上就是关于本次 单元测试无@SpringBootTest引发的空指针异常问题 所展开的一系列排查测试,望对您有帮助:rose: