2010-12-10 20 views
0


Spring 3.0.4の@ContextConfigurationアノテーションに関して少し問題があります。私は実行時にapplicationContext(可能であれば)を介してそれらを取得したいと思います。実行時のコンテキスト設定の取得

のは、私はこのクラスを持っているとしましょう:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"foo.xml", "bar.xml"}) 
public class Foo() extends AbstractTransactionalJUnit4SpringContextTests { 
    @Before 
    public void before() { 
     //retrieve foo.xml and bar.xml here 
    } 
} 

それは私の状況で役に立つだろう、私は、ウェブ上で少し見てきたし、これを実現する方法についてのアイデアの多くを発見していません多分、SOの専門家が私を助けることができます。

おかげ

+0

あなたのクラスは 'foo()'と呼ばれることはできません。それは 'Foo'と呼ばれるべきである – Bozho

+0

あなたは行く;) – ALOToverflow

答えて

3

私はそのための公共の有用性を有するを認識していないんだけど、一番簡単な方法は、手動で注釈解析するようになります:ApplicationContextAwareインタフェースを実装する場合に役立ちます

String[] locations = 
    Foo.class.getAnnotation(ContextConfiguration.class).locations(); 
+0

ありがとう。かなり私が探していたもの。あなたはクラスがインスタンス化されていない場合でも注釈を取得できます – ALOToverflow

+0

はい、そうです。だから、私はそれを 'Foo.class'と呼んだのです – Bozho

0

チェック。これにより、アプリケーションコンテキストにアクセスできるようになります。

0

@ContextConfigアノテーションの場所を動的に指定することはできません。しかし、代わりに適切な注釈とともにTestExecutionListenerを使用することができます。 beforeTestMethod()では、リスナーはTestContextからApplicationContextを取得し、必要なxmlファイルを手動でロードできます。

各テストで異なるxmlファイルが必要な場合は、@AfterメソッドでもTestContext.markApplicationContextDirty()を呼び出す必要があります。

関連する問題