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扫描下方二维码关注公众号和小程序↓↓↓
Loading...