Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于测试的事务管理器_Java_Hibernate_Transactions - Fatal编程技术网

Java 用于测试的事务管理器

Java 用于测试的事务管理器,java,hibernate,transactions,Java,Hibernate,Transactions,我有一个简单的事务管理器实现,我想知道如何最好地处理我的端到端集成测试 在我的测试中,我在我的测试中调用一个操作,该操作启动一个事务并执行一些工作。作为测试的一部分,我想对数据库的工作做一些断言,但我不想提交事务——我想回滚它 我认为实现这一点的一种方法是重写事务管理器,让commit方法什么都不做,并在测试结束时调用rollback 这种方法涉及的一个问题是缓存,如何确保每个操作都会导致数据库调用,而不是使用任何缓存 我想这一定是以前已经回答过的问题——没有必要重新发明轮子,那么我做的对吗 如

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

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

我认为实现这一点的一种方法是重写事务管理器,让commit方法什么都不做,并在测试结束时调用rollback

这种方法涉及的一个问题是缓存,如何确保每个操作都会导致数据库调用,而不是使用任何缓存

我想这一定是以前已经回答过的问题——没有必要重新发明轮子,那么我做的对吗


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

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

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