おしりんブログ

新人PGおしりんの色々まとめるよブログ

テスト~Spring~

こーいう夢ならもーいーちーどあーいたいー!

こんばんは。おしりんです。
最近、髪の毛のプリンが進行しています。

プッチンおしりんです。ちがうか。

そんな今日は、春が近づいてきましたねってことで
JUnitを使用したSpringのテストについてまとめたいと思います。

基本と応用、二段階にわけて進めていきたいと思いマッスル。

基本

はじまりはじまり~まずは基本編。
テストの中で@AutoWired使いたいって時はどうするの?っていうお話。

これは調べれば色々サイト出てくる。
けど、いちおうまとめとく。

設定ファイルの作成

まずはテスト用Spring設定ファイルを作成し、test/resource下に配備。

ファイルの中身は、実際に動かしているアプリのものをコピー。
ファイルの接頭辞にtest-とかつけておくといいかも。

のちのちDBと連携する~とかなった場合は、
このファイルにテスト用のデータソースのbeanを記述したりする。

<bean id="dataSourceTest"
    class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
    <constructor-arg ref="dataSource"/>
</bean>

こんな感じ。

@Annotation

つぎにテストクラスにくっつけるアノテーションについて。

この2つのアノテーションめっちゃ重要。
白子ポン酢食べたい。

  • @RunWith(SpringJUnit4ClassRunner.class)
    RunwithアノテーションにSpringJUnit4ClassRunnerクラスを指定することで @Autowiredが使えるようになる。

  • @ContextConfiguration(locations = { "classpath:test-application-config.xml" })
    ひとつ上の見出しで作成したテスト用の設定ファイルの場所を指定する。

テストクラスの作成

それでは早速テストを実装してみまっすい。
テストするのは、view名を返すだけの簡単なコントローラークラス。

@Controller
public class HogeController {
    @RequestMapping(value = "/hoge.html", method = RequestMethod.GET)
    public String start() {
        return "hoge";
    }
}

で、テストがこんな感じ。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:test-application-config.xml" })
public class HogeControllerTest {

    @Autowired
    HogeController sut;

    @Test
    public void startTest() {
        String actual = sut.start();
        String expected = "hoge";

        assertThat(actual, is(expected));
    }
}

JUnit実行ボタンぽちー!
HogeControllerクラスをAutowiredできました。

簡単!便利!だれでもかける!
ってことで基本編はこれでおわり。つぎは応用編。