好的,我想通了。这个问题的答案是双重的。首先,扩展AbstractTransactionalJUnit4SpringContextTests
不起作用。这是因为它需要一个数据源来创建SimpleJdbcTemplate
用于在测试中使用简单的 JDBC 查询来验证内容。由于我在此测试中不使用此功能,因此可以替换extends AbstractTransactionalJUnit4SpringContextTests
为以下配置:
@ContextConfiguration(locations = "classpath:applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners({
DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class,
TransactionalTestExecutionListener.class
})
@Transactional
public class IntegrationTest {
...
}
这些注释的组合提供了与扩展相同的设置AbstractTransactionalJUnit4SpringContextTests
。
第二部分是理解,因为我有三个数据源,所以我还需要所有三个数据源,所以被同一个引用PlatformTransactionManager
。我有分布式事务。这对于 a 是不可能的DataSourceTransactionManager
,所以我不得不使用 a JtaTransactionManager
。