JUnit

JUnit5のコントローラのテストで@WebMvcTestや@Importのアノテーションを利用してみた

コントローラクラスのテストを行う際、@SpringBootTestアノテーションの代わりに@WebMvcTestアノテーションを利用すると、@WebMvcTestアノテーションで指定したコントローラクラスと、コントローラクラスを動作するために必要なMVCインフラストラクチャのみをインスタンス化することができるため、テストクラスの実行速度を早めることができる。

今回は、@WebMvcTestアノテーションを利用してコントローラクラスのテストを行ってみたので、そのサンプルプログラムを共有する。

なお、@WebMvcTestアノテーションを利用する際は、@Importアノテーションを利用して、コントローラクラスで参照するクラスをDIできる指定を追加する必要がある。

前提条件

下記記事の実装が完了していること。

JUnit5でBean Validationのテストを行ってみたSpring Bootを利用したWebアプリケーションで、Formオブジェクトのチェック処理を行う際はBean Validationを利...

作成したサンプルプログラムの内容

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから変更したプログラムである。

コントローラクラスのテストを行うクラスは以下の通りで、@WebMvcTestアノテーション・@Importアノテーションをクラスに付与している。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/junit5-webmvctest-import/demoRestApiCallWeb



「AOMEI Partition Assistant Standard(無料)版」は便利なパーティション管理ツールだったハードディスクの記憶領域を論理的に分割し、分割された個々の領域のことを、パーティションといいます。 例えば、以下の図の場合、C/D...

テストプログラムの実行結果

テストプログラムの実行結果は、以下の通り。

1) testIndexメソッドを実行した結果は以下の通りで、Spring Bootアプリケーションを起動後、テスト対象のコントローラクラスのindexメソッドを実行し正常終了していることが確認できる。
サンプルプログラムの実行結果_1

2) testAddメソッドを実行した結果は以下の通りで、Spring Bootアプリケーションを起動後、テスト対象のコントローラクラスのaddメソッドを実行し正常終了していることが確認できる。
サンプルプログラムの実行結果_2

3) testAddExceptionメソッドを実行した結果は以下の通りで、Spring Bootアプリケーションを起動後、テスト対象のコントローラクラスのaddメソッドを実行しチェックエラーとなる動作が確認できる。
サンプルプログラムの実行結果_3

要点まとめ

  • コントローラクラスのテストを行う際、@SpringBootTestアノテーションの代わりに@WebMvcTestアノテーションを利用すると、テストクラスの実行速度を早めることができる。