Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 如何在更新时模拟异常以测试spring事务管理?_Java_Spring_Unit Testing_Transactions_Spring Transactions - Fatal编程技术网

Java 如何在更新时模拟异常以测试spring事务管理?

Java 如何在更新时模拟异常以测试spring事务管理?,java,spring,unit-testing,transactions,spring-transactions,Java,Spring,Unit Testing,Transactions,Spring Transactions,在同一spring托管事务下,我有一系列更新,如下所示: someRepositoryA.updateEntityA(...) someRepositoryB.updateEntityB(...) someRepositoryC.updateEntityC(...) 如何模拟someRepositoryB.updateEntityB(…)抛出异常?这将允许我看到A所做的更改被撤销。因为我将测试事务,所以我不能模拟存储库,但我将使用一些内存中的数据库。我不会模拟异常,我会让某些东西真正出错 您正

在同一spring托管事务下,我有一系列更新,如下所示:

someRepositoryA.updateEntityA(...)
someRepositoryB.updateEntityB(...)
someRepositoryC.updateEntityC(...)

如何模拟
someRepositoryB.updateEntityB(…)
抛出
异常
?这将允许我看到A所做的更改被撤销。因为我将测试事务,所以我不能模拟存储库,但我将使用一些内存中的数据库。

我不会模拟异常,我会让某些东西真正出错

您正在使用内存中的数据库,因此可以控制测试数据。如果你是在重新制造一个真正的问题,而不是伪造一些东西,那么这也是一个更好的测试(不太可能有坏的假设使你的结果无效)


测试事务的最简单方法是让测试创建一个B并选择数据,这样更新将导致违反引用完整性约束(您是否有任何NOTNULL约束?否则您可以通过重新使用现有值引入无效的主键值)。RI冲突将导致抛出异常。

这不是单元测试,对吗?啊,我没有注意标记:)