用于测试的事务管理器



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

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

我可以想到的实现此目的的一种方法是覆盖事务管理器并使 commit 方法不执行任何操作并在测试结束时调用回滚。

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

我想这一定是以前已经回答过的事情——重新发明轮子没有意义,所以我在做正确的事情吗?

如果重要的话,我使用的是Hibernate,而不是使用Spring。

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

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

最新更新