Spring Boot 单元测试覆盖 TransactionTemplate 编程式事务

单元测试 Spring Boot 事务 About 1,120 words

业务代码

@Service
public class MyService {

    @Resource
    TransactionTemplate transactionTemplate;
    
    public void doMyMethod(String value) {
        transactionTemplate.executeWithoutResult(status -> {
            // 业务逻辑
        });
    }
}

单元测试

class MyUnitTest {

    @Mock
    TransactionTemplate transactionTemplate;

    @InjectMocks
    MyService myService;

    @BeforeEach
    void setUp() {
        MockitoAnnotations.openMocks(this);
    }

    @Test
    void testMyMethod() {
        // 模拟 transactionTemplate.executeWithoutResult 的行为
        Mockito.doAnswer(invocation -> {
            // 获取传入的 TransactionCallbackWithoutResult 对象
            Consumer<TransactionStatus> callback  = invocation.getArgument(0);
            // 执行 executeWithoutResult 方法
            callback.accept(null);
            return null;
        }).when(transactionTemplate).executeWithoutResult(Mockito.any());

        // 调用被测试的方法
        myService.doMyMethod("myValue");

        // 验证 transactionTemplate.executeWithoutResult 是否被调用
        Mockito.verify(transactionTemplate).executeWithoutResult(Mockito.any());
    }

}
Views: 2 · Posted: 2026-01-17

———         Thanks for Reading         ———

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓
Prev Post
Today In History
Browsing Refresh