好的,我想通了。這個問題的答案是雙重的。首先,延伸AbstractTransactionalJUnit4SpringContextTests
將無法正常工作。這是因爲它需要一個數據源來創建SimpleJdbcTemplate
用於在測試中驗證具有簡單JDBC查詢的內容。因爲我沒有在這個測試中使用此功能,我可以與collowing配置替代extends AbstractTransactionalJUnit4SpringContextTests
:
@ContextConfiguration(locations = "classpath:applicationContext.xml")
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners({
DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class,
TransactionalTestExecutionListener.class
})
@Transactional
public class IntegrationTest {
...
}
這些註釋的組合提供了相同的設置來延長AbstractTransactionalJUnit4SpringContextTests
。
第二部分了解到,由於我有三個數據源,所以我也需要所有三個數據源,以便通過相同的PlatformTransactionManager
來引用。我有分佈式交易。這是不可能的,因爲DataSourceTransactionManager
,所以我不得不使用JtaTransactionManager
。
請注意,您不需要指定'@ TestExecutionListeners' - 這些偵聽器默認情況下處於啓用狀態。 – axtavt 2010-10-19 15:04:30