springboot项目test单元测试java.lang.NullPointerException问题

这篇具有很好参考价值的文章主要介绍了springboot项目test单元测试java.lang.NullPointerException问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

最近在测试写好mapper相关接口时是,出现空指针异常,所以记录一下。


问题描述

在测试用户登录时,出现如下错误

测试方法
springboot项目test单元测试java.lang.NullPointerException问题

错误信息
springboot项目test单元测试java.lang.NullPointerException问题


原因分析:

通过分析日志了解到原因是
无法调用“AdminUserMapper.login(String, String)”,因为“this.adminUserMapper”为空

应该是AdminUserMapper没有注入进来,但是自己已经引入进来了

 @Autowired
 private AdminUserMapper adminUserMapper;

是没有问题的,而且配置了@MapperScan,就是不能引入。查了网上资料后终于知道错误在哪。
在test测试目录下,我们写的测试类要加上@SpringBootTest


解决方案:

如下图所示

springboot项目test单元测试java.lang.NullPointerException问题

最后这里总结一下java.lang.NullPointerException出现的几种原因

总结java.lang.NullPointerException出现的几种原因

1、字符串变量未初始化
2、接口类型的对象没有用具体的类初始化,比如: Map map // 会报错 Map map = new Map(); //则不会报错了
3、当一个对象的值为空时,你没有判断为空的情况。
4、字符串与文字的比较,文字可以是一个字符串或Enum的元素,如下会出现异常 String str = null; if(str.equals(“Test”)){ //这里的代码将不会被触发,因为会抛出java.lang.NullPointerException异常。 }
5、优先使用String.valueOf()方法代替toString() 当程序代码需要对象的字符串表示形式时,请避免使用该对象的toString方法。如果你的对象的引用等于null,NullPointerException则会抛出,使用静态String.valueOf方法,该方法不会抛出任何异常并打印"null"
6、class被声明了类型, 默认 class = null; 这样在调用class中方法的时候系统只能给你个空指针异常, 给其实例化就好了:class = new Class();
7、返回null,方法的返回值不要定义成为一般的类型,而是用数组。这样如果想要返回null的时候就能避免许多不必要的NullPointerException。文章来源地址https://www.toymoban.com/news/detail-432520.html

到了这里,关于springboot项目test单元测试java.lang.NullPointerException问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot单元测试(unit testing)

    目录 1.什么是单元测试? 2.单元测试的优点 3.关于单元测试框架 4.单元测试的实现

    2024年02月16日
    浏览(45)
  • Springboot Unit Test(单元测试)

    单元测试,是指对程序中的最小可测试单元进行验证,在Java中的话,就是类。其有两个目的: 验证程序实现的逻辑是否与设计的逻辑正确 在涉及到代码修改时,用单元测试去保证原有功能不被破坏, 而一个好的单元测试应该具备以下FIRST 原则和AIR原则中的任何一条: 单元

    2024年03月22日
    浏览(50)
  • SpringBoot单元测试java.lang.IllegalStateException Could not initialize plugin: interface org.mockito解决方案

      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作

    2024年02月04日
    浏览(44)
  • 【springboot test】springboot 单元测试配置文件加载顺序及覆盖关系

    参照目录结构: 1.配置文件加载基础原则: 通过任意方式指定的application-xxx.yml中会覆盖application.yml中同名配置,application.yml一般作为兜底或通用配置 2.application.yml主配置文件加载原则: [ 实际运行的application.yml ] = [ test/resources/application.yml ] ? [ test/resources/application.yml ] : [ main/reso

    2024年02月13日
    浏览(35)
  • java.lang.RuntimeException: java.lang.NullPointerException

    空指针异常 一般导致空指针异常的是 1.对象未初始化:当一个对象被声明但未被实例化,或者被赋值为null时,尝试调用该对象的方法或访问其属性都会导致空指针异常 例如: 2.方法返回null:如果一个方法返回null,而调用者没有检查返回值是否为null,直接对返回值进行操作就

    2024年02月02日
    浏览(74)
  • Maven 项目中为什么Junit之@Test 单元测试无法使用

    由于框架项目的使用,会有很多模块,所以Junit中的@Test注解是我们比较常用的注解,但是有些小问题我们需要注意 在创建完Maven项目后,我们通常呢会导入以下这样的依赖包: 但是我们这时候去代码中使用@Test,会出现报红,这是为什么呢?🤨 这里先说明下,org.junit是导入

    2024年02月02日
    浏览(54)
  • test-01-java 单元测试框架 junit 入门介绍

    JUnit 是一个用于编写可重复测试的简单框架。 它是 xUnit 架构的一种实例,专门用于单元测试框架。 What to test? Need Desc Right 结果是否正确 B 边界条件是否满足 I 能反向关联吗 C 有其他手段交叉检查吗 E 是否可以强制异常发生 P 性能问题 CalculatorTest 类包含了一个测试方法 test

    2024年02月04日
    浏览(42)
  • java.lang.NullPointerException: null

    错误提示的大意是:空指针异常。说明报错位置缺少信息或者是数据对应不上。 知道大概意思后现在开始排查,点击 Debug ,就是下图的这个按钮  然后根据前面提示的报错行,再打开项目运行。  接着看报错信息,它说这个类型等于null,但是查看该页面,发现上述页面没有

    2024年02月15日
    浏览(45)
  • java程序启动时自动执行方法 @PostConstruct,单元测试@Test

    java程序启动时自动执行方法,在方法上添加@PostConstruct注解即可,可以代替单元测试junit的@Test注解 @PostConstruct //程序启动时自动执行方法 @Test //需要选中该方法运行启动(单元测试) java 代码----程序启动时自动执行方法 @PostConstruct java 代码----需要选中该方法运行启动(单元

    2024年02月05日
    浏览(44)
  • java.lang.NullPointerException 空指针问题

    1.从本获取数据:数据库,文件等 2.请求网络获取后台数据 3.从进程间获取其他进程或是线程的数据 4.activity之间的数据传递 特别是多层级的数据格式,每一层都要进行判断: 如:返回的bean为 InfoDataResponse: {         id : 1,         result : 200,         data : {              

    2023年04月18日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包