2

アプリケーションを Spring TestContext フレームワークと統合テストしようとしています。いつものように、 を拡張してこれをAbstractTransactionalJUnit4SpringContextTests行いました。ただし、私のアプリケーションには 3 つの異なるデータ ソース (xDataSource、yDataSource、zdataSource などの名前) があるため、テストを実行しようとするとAbstractTransactionalJUnit4SpringContextTests、データ ソースの自動配線が機能しません。タイプ別ですが、3つ見つかったので、どれを選択すればよいかわかりません。

Spring TestContext Framework に 3 つのデータ ソースを使用させる方法はありますか? もしそうなら; どうやって?

4

3 に答える 3

2

わかりました。この質問に対する答えは 2 つあります。まず、拡張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

2 番目の部分は、データ ソースが 3 つあるため、3 つすべてを同じ で参照する必要があることを理解することでしたPlatformTransactionManager。私は分散トランザクションを持っています。これは では不可能なDataSourceTransactionManagerので、 を使用する必要がありましたJtaTransactionManager

于 2010-10-19T14:59:33.013 に答える
0

primary="true"xml のようにデータ ソースの 1 つを定義すると、それが選択されます。

3 つすべてが必要な場合は、自動配線に頼ることはできませんReflectionTestUtils。テストで手動で設定するために使用してください。

于 2010-10-19T13:08:27.897 に答える