2011-04-25 36 views
2

我在JUnit测试类中运行了我的DAO测试,该测试类具有正确的@ContextConfiguration和@RunWith注释。个人测试将一些数据存入数据库并检查完整性。预计他们将在此之后清理数据库状态。有一个简单的方法 - 将方法/类标记为@Transactional,然后方法在事务中执行,并且回滚发生。使用Spring @ContextConfiguration进行事务测试 - 清除数据库问题

问题是,这种DAO测试方法不能完全模拟环境。说,我的JPA实体中有一些延迟加载的收集字段。在我的控制器代码中,我通过myDao.getMyEntity(id)调用获得了该实体,并迭代了lazy collection。我在应用程序运行时得到的是一个LazyInitializationException,但是这不会发生在我的测试中,因为它实际上是事务性的。如何使用不是@Transactional的测试运行我的测试,但是数据在测试结束时仍然被清除?

我使用内存中的HSQLDB进行测试,如果它有任何区别。

回答

相关问题