自动测试声明一个属性真的很懒惰与休眠

时间:2010-09-27 09:14:03

标签: hibernate

我必须在属性&中添加一个lazy = true。我已经添加了一个ant任务来引入该类,以使hibernate能够在我的pom中使它变得懒惰。

有没有办法测试现在这个属性在运行时是否处于延迟模式而不看hibernate sql控制台输出?我的意思是单元测试(即时使用带junit的弹簧测试)。我不想测试xml映射中是否存在lazy属性。仅这一点并不能确保休眠将其视为一种懒惰的属性。

我想要一个junit测试,以确保测试人员揭示的这个错误将来不再出现(我并不是唯一的项目)。

我正在遵循(最好的)练习,即每个非常微不足道的bug应该有一个自动测试,以防止他回来。(顺便说一句,我从Spring框架测试中接受了这个想法)

3 个答案:

答案 0 :(得分:1)

您可以加载实体,关闭会话,然后断言访问该属性时会引发LazyInitializationException

答案 1 :(得分:1)

我找到了另一个解决方案:
org.hibernate.Hibernate.isPropertyInitialized(pojo, propertyName) check if the property is initialized..

LazyInitializationException强制关闭会话的技巧将导致其他测试的问题&如果分享这个,就重新打开一个。

答案 2 :(得分:1)

我们未能成功使用isPropertyInitialized(entity, "property"),但isInitialized(entity.getProperty())效果不错