首页 > 解决方案 > 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) {...}
}

虽然我知道框架以这种方式运行,但最好进行测试以检测任何未来的变化并避免潜在的意外。

标签: javaspringspring-data-jpaspring-transactions

解决方案


那应该不会太难。

Spring 使用 aPlatfromTransactionManager来管理事务。如果您通过委托给实际的事务管理器注册实现此接口的包装事务管理器,您应该能够轻松计算调用/返回的事务数。


推荐阅读