投稿

1月, 2013の投稿を表示しています

[Spring] Autowiredアノテーションを使っているクラスのユニットテスト

ちょっと確認のために試してみました。ソースは以下。
https://bitbucket.org/twopack/jsonrest/commits/e5353d883dffe31f99948a977b938c69
試したかったのは、 @Autowired でインジェクションしているクラスをJUnitで動かすにはどうするかです。

上記のソースで autoPerson@Autowired してます。
決めうちでアクセスすると、autoPerson にアクセスして Micheal を返すようにしています。

テスト側で対応を行わない場合、テストを実行すると autoPersonNullPointerException になります。JUnitで実行時には、 @Autowired でインジェクションが行われていないことが原因です。
対策のポイントは、以下のサイトを参照しました。

Autowired JUnit Tests with Spring 2.5Spring JUnit testing with @Autowired annotation

@Autowiredアノテーションを有効にする 1つ目のポイントは、JUnitのテストに @RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration を記載して、 Spring の TestRunner で動くようにします。
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration public class HomeControllerTest { .... }
@ContextConfiguration を記載すると、クラスパス上の テストクラス名-context.xml を読み込んで設定します。
この中で、インジェクションするbeanを設定します。
<beans:beans xmlns="http://www.springframework.org/schema/mvc"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:beans="http://www.sp…