java - 如何测试@Transactional 方法,其中两个表正在更新
问题描述
我正在尝试为使用以下方法的方法编写单元测试:@Transactional。有两种方法被调用,每种方法都在两个表上运行更新查询,如果一个失败,另一个不应该运行或回滚。
我需要编写一个单元测试来检查事务是否正常工作。
请协助。提前致谢。
解决方案
测试故障条件并不是一件坏事,实际上这是应该做的事情。
我会为此进行集成测试,因为您想检查一个真实的数据库以查看故障是否按预期回滚。
你有两个测试:
- 第一次更新失败,一切都应该停止,第二次更新不应该运行。
- 第一次更新有效,第二次失败,所以第一次更新应该回滚。
如果你想要单元测试,那么例如使用内存数据库。
您不会说您正在使用哪个数据库,但通常您可以检查更新是否成功,因为更新语句会告诉您已更改了多少行。如果您得到零,或者更新语句有问题并且收到错误消息,那么您知道您需要停止
推荐阅读
- swift - Swift 4.2 & 观察枚举值
- javascript - 控件和循环不适用于 Youtube 视频(YouTube API)
- javascript - feathersjs 频道的事件不会传递给客户端
- javascript - 用于多语言页面上的 onclick 元素的缓存
- html - 我可以仅将 ' ' 之类的转义序列用于样式目的吗?
- amazon-web-services - 我应该如何可视化与 AWS ALB 的 WebSocket 连接?
- ruby-on-rails - 是否可以将功能从一个模型重定向到另一个模型
- python - NumPy 数组花式索引
- vba - 用于表中自动列检测的 Vba 脚本
- r - 如何更改不同语言环境中的字母?