TestNG单元测试用例中的延迟初始化异常,用于测试Spring服务层

时间:2013-12-26 05:38:05

标签: spring hibernate service testng

在使用TestNG测试用例测试spring服务层时,我得到了延迟初始化异常。你能帮我解决一下这个问题。不确定我是否遗漏了以下测试用例中的任何内容。但是,如果我在Dao层中为相同的方法创建并执行测试用例,那么它的工作正常。

2 个答案:

答案 0 :(得分:0)

您有以下映射

<set name="validResponses" lazy="true" inverse="true"

懒惰地加载InspectionQuestion.validResponses字段。

我将假设

InspectionQuestion iq = inspectionStepQuestionService.getActiveInspectionQuestionByCode(QuestionType.COUNTRY_ORIGIN);

SessionTransaction内完成。方法返回时,Transaction已提交,Session已关闭。因此,任何未被急切加载的字段都处于未初始化状态。在此之后尝试初始化它们将导致您看到的LazyInitializationException

简单的解决方案是将lazy="true"更改为lazy="false",但这可能不是您想要的。

相反,可能会更改您的InspectionStepQuestionService方法,以便在需要时完全初始化您的实体

Hibernate.initialize(inspectionQuestion /* or entity to return */);

答案 1 :(得分:0)

通过在测试类中添加以下注释,我能够维护会话。 @TransactionConfiguration(transactionManager =&#34; hibernateTransactionManager&#34;,defaultRollback = true)。