java - Spring @Transactional - 可以测试交易数量吗?
问题描述
我有一个 api 类,@Transactional
如图所示。一些方法的子集进一步用 注释readOnly=true
。在编写测试时,有什么方法可以验证实际发生的事务数量?考虑如果delete
方法实现调用了exist
方法 - 那么在测试中调用delete
只应该发生一个事务。但是,如果测试本身在调用exist
之前调用该方法,delete
则应该发生 2 个事务。
@Transactional
public class AnApi {
public AnEntity create(EntityData data) {...}
public void delete(Long id) {...}
@Transactional(readOnly = true)
public boolean exists(Long id) {...}
}
虽然我知道框架以这种方式运行,但最好进行测试以检测任何未来的变化并避免潜在的意外。
解决方案
那应该不会太难。
Spring 使用 aPlatfromTransactionManager
来管理事务。如果您通过委托给实际的事务管理器注册实现此接口的包装事务管理器,您应该能够轻松计算调用/返回的事务数。
推荐阅读
- apache-flink - 如何从头到尾跟踪有限的数据流?
- r - 有没有办法自动重新安装“由具有不同内部结构的 R 版本安装”的软件包?
- bash - Bash 命令:替换文本开始
- reactjs - 如何在反应中处理元标记?
- octave - 如何在 Octave 中使用 Psychtoolbox 收集非 ascii 字符?
- flutter - 如何比较流中的每个事件,streamController dart
- python - 如何在 python 3.7 上发布基于文本的游戏?
- c# - 编写显式接口 I1 c=new customer();
- java - 与目标 VM 断开连接,地址:'127.0.0.1:6935',传输:'socket'
- javascript - 如何从不同的 create-react-app 项目本地导入 React 组件?