2011-02-06 23 views
2

私は解決策を提供しなければならないいくつかのAPIコードを持っています。私はこのコードで春を使用して探しています。工場での実装のためのJunitテストにおける依存性注入

ファクトリインターフェイスがあり、ABCFactoryと呼ぶことができます。サービスのインスタンスを返します。

public interface ABCFactory { 
    XYZService getXYZService(); 
} 

XYZService自身もインタフェースです。

私は修正できないTestClassを持っています。

ABCFactory abcFactory = (ABCFactory) Class.forName(
      "com.me.blah.ABCFactoryImpl").newInstance(); 

私はABCFactoryImplを思いついてみる必要があります。しかし、ABCFactoryImplに依存性注入を使用できるかどうかは分かりません。 JunitテストではSpringについての知識はありません。ジュニットテストを春のコンテキストを意識させることなく、すべてのことをアップすることも可能ですか?

PS:春DIの私の知識は既知の、無能である(私は私が読ん/知っておく必要がありますどのくらい知っている)

+0

あなたの最善の策は、jUnitテストをSpringに認識させることです。そうしないと、依然として依存関係が残っている可能性があります。 –

+0

残念ながら、Testクラス内で変更を行うことはできません。テストスプリングを認識させる他の方法はありますか? – geoaxis

+0

本当に。例。テストでは、インスタンスを管理するためにjvmを使用してリフレクションを使用してクラスを作成しています。 Spring/DIは同じことをしますが、オブジェクトを通常はfauxシングルトン(1インスタンス、Springで管理)として作成するようにインスタンスを管理するコンテナを提供します。 –

答えて

0

それはabcFactoryがインスタンスフィールド、静的フィールドまたはローカル変数であるかどうかに依存します。

インスタンスフィールドまたは静的フィールドの場合は、特別なJUnitRunnerを実装してDIを実行し、テストケースに@RunWithアノテーションを付けてください。同じランナーを他のテストケースで再利用することもできます。

私はこれを静的フィールドまたはインスタンスフィールドを挿入するために行っています。

関連する問題