首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Junit assertNotNull()预言hibernate的一个小陷阱

2012-10-25 
Junit assertNotNull()断言hibernate的一个小陷阱几乎所有人在断言一个对象是否为空的时候都会调用assertN

Junit assertNotNull()断言hibernate的一个小陷阱
几乎所有人在断言一个对象是否为空的时候都会调用assertNotNull(obj).
但是在测试hibernateDao的方法时需要注意一下assertNotNull()这个方法.
例如:

junit 测试如下:Info info = dao.loadById(infoId);assertNotNull(info);

这段代码看似没什么问题.其实是有问题. load方法返回的是一个代理对象(Proxy).是实实在在的引用一个内存的对象.
assertNotNull方法只是根据 obj!=null 来判断这个断言是否为true或者false.
假如数据库当中存在id为infoId的对象.上面那个测试将不会有问题.
但是如果数据库当中不存在id为infoId的这个对象.这个测试将会隐藏一个bug.
比如在后面加上一段System.out.print(info);
你会发现如果不出现session was closed 情况时,实际上会抛出一个object not found 的异常!

小小的陷阱~.呵呵

热点排行