测试的事务管理器

时间:2016-03-06 21:49:20

标签: java hibernate transactions

我有一个简单的事务管理器实现,我想知道如何最好地处理我的端到端集成测试。

在我的测试中,我在我的测试中调用一个动作,它启动一个事务并完成一些工作。作为我的测试的一部分,我想做一些关于数据库工作的断言,但是我不想提交事务 - 我想回滚它。

我认为实现这一目标的一种方法是覆盖事务管理器并使提交方法不执行任何操作,并在测试结束时调用回滚。

这种方法让我担心的一件事是涉及的缓存,如何确保每个操作都会导致数据库调用而不是使用任何缓存?

我认为这必须是之前已经回答的问题 - 重新发明轮子没有意义,所以我做对了吗?

如果重要,我正在使用Hibernate而不使用Spring。

1 个答案:

答案 0 :(得分:0)

使您的测试类具有事务性,并在后测试方法中进行回滚。 你可以在一个抽象的超类中做到这一点。因此,您不必在每个集成测试类中都这样做。

您必须决定在测试环境中禁用缓存或使用缓存是否是个好主意。使用缓存可能会产生副作用,但您更接近现实。另一方面,您可能希望测试dao层而不是缓存。