【问题标题】:Viewing Data From Transactional Tests - Hibernate + Spring + MySQL从事务测试中查看数据 - Hibernate + Spring + MySQL
【发布时间】:2011-04-15 11:21:37
【问题描述】:

我在 Hibernate/Spring 应用程序中有一堆测试。昨天,我将它们从使用 Spring 提供的 JUnit 3.8 基础测试类转换为 JUnit 4.4 类。

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

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

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

【问题讨论】:

  • 你能给我你的测试代码吗?如果有错误,请将错误写到您的问题中。

标签: java mysql hibernate spring automated-tests


【解决方案1】:

我遇到了同样的问题,发现在使用 YOG 时设置 session 隔离级别有时会有所帮助。

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

这只是发现了另一个令人不安的问题——在运行测试时,Hibernate 并没有实际运行某些操作,除非我在每次 Hibernate 操作后使用HibernateTemplate.flush();。 由于这很烦人,我最终设置了 Hibernate,使其始终刷新查询,如下所示:

HibernateTemplate hibernateTemplate;

... 

hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_ALWAYS);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-29
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    相关资源
    最近更新 更多