Junit assertNotNull()预言hibernate的一个小陷阱
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 的异常!
小小的陷阱~.呵呵