Spring Boot Test写单元测试Junit 一直进不去测试访问问题记录

在Spring Boot项目中遇到单元测试不执行主程序导致bean未初始化的异常,通过调整Spring-Boot-Starter-Test版本与Spring-Boot-Starter保持一致解决了问题。此外,还发现由于实现CommandLineRunner接口的类中的while死循环阻塞了测试方法的执行,将死循环放入threadPool中后,测试正常进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天写springboot项目的单元测试,测试需要整个项目启动完成后,才能进行测试。但是写测试类的时候遇到了大概2个问题:

1. 单元测试启动后不执行主程序方法,bean没有初始化就直接进到测试方法了,导致报NullPointException.

折腾了半天,看到一篇文章提到版本不同导致注入不成功。

于是检查了pom,将Spring-Boot-Starter-Test的版本指定到Spring-Boot-Starter相同的版本。再次运行测试方法,成功加载Spring运行主程序。我使用的版本是 2.1.0.RELEASE 。

附上那篇文章地址:https://blog.csdn.net/famouszhouxp/article/details/81055704

 

2.Spring主程序能启动后,发现程序执行半天,定时器都开始跑了,却一直没有进入测试方法的断点上去,重试几次都不行,就是一直进不去Junit Test的测试方法。主程序的那个小黄圈圈一直在转,我就怀疑是不是要哪里标记Spring程序初始化完了,才会进入Junit Test的测试方法。

折腾了好久,看到一篇文章提到阻塞,我马上想到是不是Spring主入口方法阻塞,在入口类的SpringApplication.run()代码后面打印一行字,这行字也打印不出来。想到主线程不来就阻塞的,不然程序就退出了。

这时候我想到了项目有个类有实现CommandLineRunner接口,在他的run()方法里有一个while死循环,是用来初始化一些东西的,会随着整个系统一直运行。我就想应该是这里阻塞了,于是把这个死循环放到一个threadPool里。再次运行测试方法,成功进入测试方法断点。问题解决!

附上那篇带阻塞关键字的文章地址:https://blog.csdn.net/we

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值