Testクラスの問題と解決策
テストクラスでは、各々の試験方法は、次の2行のコードを有します。
ApplicationContextのAC = 新 ClassPathXmlApplicationContext( "bean.xml"); = ac.getBean( "AccountServiceの"、IAccountServiceとしてIAccountService クラス)。
アクションのこの2行は、あなたがそれを書いていない場合、あなたは直接nullポインタ例外を求めるプロンプトが表示されます、コンテナを得ることです。だから、簡単に削除することはできません。
3.1.2 ソリューションの分析
これらの問題に対応して、私たちは、私たちは、自動的にコンテナを作成することができますプログラムが必要です。プログラムが自動的に私たちのために春のコンテナを作成することができたら、私たちは手動で解決される問題を作成する必要はありません。
我々は、すべての(ウェブステージ過程で話さ)原則としてJUnitのユニットテストは、どうやら、JUnitのは、我々はない私たちは、コンテナの作成を支援するために春に言及し、Springフレームワークを使用するかどうかを知ることができないため、独自の、達成できないことを知っています。しかし、幸いなことに、JUnitのは、私たちのコメントへの露出を与え、あなたは、私たちはそのランナーを交換させることができます。
この時点で、我々はそれが実行を提供して、あなたがコンテナを作成するために、構成ファイル(またはノート)を読み取ることができ、春のフレームワークに依存する必要があります。私達はちょうどどこライン上の設定ファイルにそれを伝える必要があります。
設定手順
3.2.1 コピー統合:最初のステップJUnitの不可欠のjar にパッケージをlibのディレクトリ
瓶パッケージに導入されたときに、ジャーにスプリングAOPをインポートする必要があることに留意しなければなりません。
3.2.2 ステップ2:使用@RunWithは、元のランナーを交換するためにノート
/ **
* Testクラス
* @Version 1.0
* / @RunWith(SpringJUnit4ClassRunner。クラス)パブリッククラス AccountServiceTest {
}
3.2.3 使用:第3段@ContextConfiguration 指定スプリングロケーション・プロファイル
/ **
* / @RunWith(SpringJUnit4ClassRunner。クラス)
@ContextConfiguration(位置= { "クラスパス:bean.xml"})
パブリッククラス AccountServiceTest {
}
@ContextConfiguration ノート:
場所のプロパティ:指定された設定ファイルの場所。パスがクラスである場合は、次のものが必要:クラスパスを表示するクラスのプロパティを:注釈のタイプを指定します。XML設定使用していないときは、このプロパティは必要注釈の位置を指定します。
3.2.4 第四ステップ:使用@Autowiredをテストデータクラス変数注入に
/ **
* / @RunWith(SpringJUnit4ClassRunner。クラス)
@ContextConfiguration(位置= { "クラスパス:bean.xml"})
パブリッククラス AccountServiceTest {
@Autowired
プライベート IAccountServiceとして;
}
なぜテストクラスに割り当てられたXML に
この問題を説明する前に、XMLに割り当てられた最初のリフトみんなの懸念は、それを使用することはできませんか?その答えは、イエス問題ありません、あなたが使用することができます。
なぜ道を構成するためにXMLを使用していませんか?その理由はこれです:
最初に:私たちは、コンテナを作成するために、ばね荷重設定ファイル、XMLでBeanを構成すると、そのオブジェクトを作成します。
第二:テスト機能では、我々だけでテストクラス、およびそれがプロジェクトのプログラムロジックに参加していないが、それは使用しませんでしたので、作成し、需要の問題を解決することはできません。その後、コンテナはリソースの無駄になりますがあります。
したがって、上記の2点に基づいて、我々はテスト構成XMLファイルに置くべきではありません。