【踩坑记录】 一个关于springJDBC与JunitTest的坑..

 

  这几天在自学spring,博主自己按照找来的教程,对照着官网的文档,一路走来终于到了与数据库交互的阶段--springJDBC,昨天在演练的时候遇到了一个很诡异的异常,在此记录一下。

首先是项目结构:很简单,employee类中实体包含三个属性,id,name,age,DAO中封装了关于employee的CRUD方法,一个测试类和一个配置文件,db.properties配置数据库信息。

  

目的是通过springJDBC实现对数据库的访问以及CRUD操作,这里用的是继承 JdbcDaoSupport类 实现的,

测试代码如下:(这里有坑,见下文

xml配置如下:EmployeeDAOImplTest-Context.xml

然后开始跑测试类测试,报了一个异常:(没换jdk环境时一直是这个错,后来换回去又不报这个了...)

java.lang.NullPointerException at com.windy.spring._01springjdbc.EmployeeDAOImplTest.testSave(EmployeeDAOImplTest.java:24) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodA....

然后首先查看了报错点,发现是 employeeDAO.save(emp);这句,当时第一反应,既然是空指针,那估计是哪个对象为空了,然后查了一遍代码,发现employee对象是new出来的,不会为空,会不会是没有注入?但是@Autowired也加了,由于是继承方式,应该也不存在dataSource为空的情况,然后查了一下配置文件,也没有问题,这时候也是一顿百度,但是都没有找到相关的问题...正在心灰意冷的时候,发现是jdk内部反射出错,然后冒出了一个大胆的想法:会不会是jdk的问题?(这些想法之前,百度过得网页不下20个,重启IDE好几次),我用的是jdk12.02,junit5.4,spring5.2.9,于是索性切换到了jdk1.8,然后新的问题又来了...经典的junit版本不兼容问题....

java.lang.Exception: No tests found matching

无奈,又被迫切换成了jdk12.02,重新建立测试类测试,但是这个时候,本以为还会继续报上边的诡异错误,但是这次重新测试,报的竟然还是这个

java.lang.Exception: No tests found matching....

奇怪了,明明切换回来了,为什么还报?然后又删掉了测试类,重新生成测试类的时候,发现有三个测试类型可以选

 

 

之前一直选的第三个,也就是最新的junit5测试,关于junit测试了解的不多,这次换成了junt4的测试类,然后重新跑了一遍,出现绿条,测试成功,卧槽

但是目前原理还不是很清楚,暂且先记录一下,后边知道原因了会补一下,有大佬知道原因的也欢迎留言~~

 

posted @ 2020-12-23 14:09  F2windy  阅读(76)  评论(0)    收藏  举报