报错信息 Failed to retrieve PlatformTransactionManager
java.lang.IllegalStateException: Failed to retrieve PlatformTransactionManager for @Transactional test
描述
在JunitTest类中,使用 @Transactional注解,在运行测试后自动回滚数据。在springboot启动类上添加注解 @EnableTransactionManagement ,运行单元测试报错。
解决
- @Transactional注解需要一个事务实例的名称才能正常运行,默认的名称应该是transactionManager ,就像这样:@Transactional(“transactionManager”)。参考如下
-
@Transactional requires a bean with name transactionManager in your application context if not specified explictly. Specify the transaction manager you want to use with your test using the @Transaction annotation value attribute
-
https://stackoverflow.com/questions/37344471/failed-to-retrieve-platformtransactionmanager-for-transactional-test-for-test-c\
- 在本人的案例中,在数据源的配置类中添加如下配置,即可解决问题。
-
@Bean @Qualifier("transactionManager") public PlatformTransactionManager txManager(@Qualifier("monitorDataSource") DataSource dataSource){ return new DataSourceTransactionManager(dataSource); }