春でジャンットをセットアップしようとしていて、春の依存性注入を使用してテストクラスを作成しようとしています。これは私が試みるべきことなのかどうか疑問に思っていますか?私が見ているのは、春がテストクラスをインスタンス化してDIを実行していると思いますが、JUnitはDIが実行されていない独自のインスタンスを作成しており、テストは失敗しています。JUnit 4.x と spring 3.1.1 を使用しています。
2 に答える
Spring を使用して依存関係をテストに注入し、統合テストにすることができます。このように注釈を付けます
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@ContextConfiguration(locations = "/applicationContext-TEST.xml")
public class MyTest {}
ただし、Spring マネージド クラスを pojo としてテストし、必要に応じてモック オブジェクトを使用することをお勧めします。
たとえば、多くのコントローラー メソッドには、実行時に Spring によって注入された Model があります。ただし、それらを単体テストするには、HashMap インスタンスを渡すだけです。そして、モックされたdaoで渡すことができる私のサービスレイヤークラスは、インターフェースを設計し、セッターインジェクションを使用するため、簡単です...
jUnit を使用すると、各テストは、テスト カバレッジの外部に依存せずに分離する必要があります。Spring でモック Bean のインスタンス化を提供するいくつかのテスト フレームワークが利用可能です。
手始めに、スタブとモックに関する優れた Martin Fowler の記事があります。
PowerMock と組み合わせた Mockito は、Spring コンポーネント、サービス、およびコントローラーのテストに役立ちます。
Mockito イントロ: https://code.google.com/p/mockito/
PowerMock イントロ: http://code.google.com/p/powermock/
これは、調査、学習、および実装に時間がかかることを理解していますが、依存性注入された Bean を使用して jUnit テストを作成する場合に非常に役立ちます。