0

Spring テスト アプリケーション コンテキストを定義する同じルート テストをすべて拡張するいくつかのテストがあります。私のテストの 1 つは別のプロファイルを使用しているため、子クラスに で注釈を付けました@ActiveProfiles("specialTestProfile")。このプロファイルは、コンテキストに注入される特別なモック Bean を作成します。このテストを実行する前後にコンテキストをクリアしたいのですが、正しい方法が見つかりませんでした。Spring テスト フレームワークがいくつかのコンテキスト キャッシングを行うこと、および私の場合は 2 つの異なるコンテキストが必要であり、コンテキストをリロードする必要がないことを知っていますが、そうしないとこの奇妙なエラーを生成する bitronix のために機能しません。コンテキストをきれいにします:

    Caused by: bitronix.tm.resource.ResourceConfigurationException: cannot create JDBC datasource named unittestdb
    at bitronix.tm.resource.jdbc.PoolingDataSource.init(PoolingDataSource.java:57)
    at sun.reflect.GeneratedMethodAccessor404.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1608)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1549)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)
    ... 62 more
Caused by: java.lang.IllegalArgumentException: resource with uniqueName 'unittestdb' has already been registered
    at bitronix.tm.resource.ResourceRegistrar.register(ResourceRegistrar.java:55)
    at bitronix.tm.resource.jdbc.PoolingDataSource.buildXAPool(PoolingDataSource.java:68)
at bitronix.tm.resource.jdbc.PoolingDataSource.init(PoolingDataSource.java:53)
... 68 more

各テスト クラスのコンテキストをリロードしても (親クラスに@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS).

4

1 に答える 1