`
lsk
  • 浏览: 111486 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
阅读更多
几乎所有人在断言一个对象是否为空的时候都会调用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 的异常!

小小的陷阱~.呵呵

6
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics