2

也许这已经得到了回答,但我没有找到任何建议......我的项目是一个 Spring Utility 项目,我使用的数据库是 MySQL,为了持久性,我将 Hibernate 与 c3p0 连接池结合使用。我在 spring 3.2 和 hibernate 3.5 上。所以这就是我想要做的:我想调试一个 JUnit 测试,跳过一些持久性功能(保存、更新等),然后通过 SQL 在数据库中手动检查条目。由于 JUnit 测试总是在事务中运行,我无法检查数据库中的条目,因为每次测试完成时都会发生回滚/永远不会发生提交。

有没有办法伪造交易存在,或者在 JUnit 测试期间绕过它们?

4

2 回答 2

2

也许您可以在调试会话期间刷新 Hibernate 中的事务并强制 Spring/Hibernate 写入数据库。

或者,您可以关闭调试会话的事务。

于 2013-09-05T11:56:39.270 回答
1

与其伪造事务存在,不如在事务发生时查看数据库的最佳方法是使用允许脏读的隔离级别进行查询。执行此操作的机制因数据库而异,在 MySQL 中您可以使用

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

在查询之前。

显然,您还需要在测试期间强制 Hibernate 刷新对数据库的写入,并在刷新后设置断点。

于 2013-09-06T12:33:31.370 回答