首页 > 解决方案 > 如何测试@Transactional 方法,其中两个表正在更新

问题描述

我正在尝试为使用以下方法的方法编写单元测试:@Transactional。有两种方法被调用,每种方法都在两个表上运行更新查询,如果一个失败,另一个不应该运行或回滚。

我需要编写一个单元测试来检查事务是否正常工作。

请协助。提前致谢。

标签: javaspringunit-testingtransactionsdatabase-testing

解决方案


测试故障条件并不是一件坏事,实际上这是应该做的事情。

我会为此进行集成测试,因为您想检查一个真实的数据库以查看故障是否按预期回滚。

你有两个测试:

  1. 第一次更新失败,一切都应该停止,第二次更新不应该运行。
  2. 第一次更新有效,第二次失败,所以第一次更新应该回滚。

如果你想要单元测试,那么例如使用内存数据库。

您不会说您正在使用哪个数据库,但通常您可以检查更新是否成功,因为更新语句会告诉您已更改了多少行。如果您得到零,或者更新语句有问题并且收到错误消息,那么您知道您需要停止


推荐阅读