如何测试@Transactional方法,其中两个表正在更新

时间:2019-06-03 09:02:09

标签: java spring unit-testing transactions database-testing

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

我需要编写一个单元测试,以检查事务处理程序是否正常运行。

请协助。 预先感谢。

2 个答案:

答案 0 :(得分:0)

模拟第二次调用抛出异常,关闭事务检查是否删除了数据

答案 1 :(得分:0)

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

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

您有两个测试:

  1. 第一次更新失败,所有操作都应停止,并且第二次更新不应运行。
  2. 第一次更新有效,第二次失败,因此应回滚第一次更新。

如果要进行单元测试,请使用内存数据库。

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