2011-04-15 39 views
3

我在Hibernate/Spring应用程序中有一堆测试。昨天,我将它们从使用Spring提供的JUnit 3.8基类测试类转换为JUnit 4.4类。从事务性测试中查看数据 - Hibernate + Spring + MySQL

一切都很好,因为现在我的测试被封装在事务中,创建/修改的数据会自动回滚(而不是我编写代码来删除新创建的实体)。

唯一的问题是在测试执行过程中,我无法查看数据库。如果测试失败,我经常在最后添加断点并通过SQL Yog同步到MySQL数据库中,以查看发生了什么。但现在,我只看到空桌子。 (我的意思是在集成测试中非常接近地模拟生产并实际触摸数据库。)

我尝试将全局隔离级别设置为未提交读取,但没有改变我看不到数据的事实。我如何配置Spring/Hibernate来允许我查看其他进程的数据?

+0

你能给我你的测试代码?如果出现错误,请将错误写入您的问题。 – 2011-04-15 17:06:37

回答

1

我有同样的问题,并发现设置会话隔离级别,同时使用YOG有时帮助。

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 

这仅发现另一个令人担忧的问题 - 在运行测试中,Hibernate的没有实际运行一些行动,除非我每天休眠操作后使用HibernateTemplate.flush();。 由于这很烦人,我终于设置休眠所以它总是冲洗查询,像这样:

HibernateTemplate hibernateTemplate; 

... 

hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_ALWAYS); 
相关问题