JUnit

JUnitのMockitoで例外処理のテストをしてみた

Mockitoを利用すると、例外を発生させるMockプログラムも作成することができる。
今回は例外処理を含むプログラムをテストするJUnitのプログラムを作成してみたので、共有する。

前提条件

下記記事の「起動ポートの変更」までの手順が完了していること。

IntelliJ IDEA上でGradleを使ってWeb画面のSpring Bootプロジェクトを作成してみたSpring Bootのプロジェクトを新規作成を「IntelliJ IDEA」のメニューから実施しようとしたところ、無料の「Commun...

やってみたこと

  1. テスト対象プログラムの作成
  2. テスト対象プログラムの実行
  3. JUnitのプログラムの作成と実行

 

テスト対象プログラムの作成と実行

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上図の赤枠は、今回記載するサンプルプログラムの内容である。

テスト対象のコントローラクラスの内容は以下の通り。

また、上記プログラムから呼び出されるコンポーネントクラスの内容は以下の通り。

さらに、例外が発生しなかった場合に表示される画面のHTMLファイルの内容は以下の通り。

また、エラーを表示させる画面のHTMLファイルの内容は以下の通り。

テスト対象プログラムの実行

テスト対象プログラムを実行する前に、まずは以下のファイル「test.txt」をC:\tmp下に配置する。
プログラム実行前のファイル配置1
プログラム実行前のファイル配置2

上記状態で、Spring Bootアプリケーションを起動し、「http:// (ホスト名):(ポート番号)」とアクセスすると、以下の画面(index.html)が表示される。
実行結果(正常時)

C:\tmp 下に「test.txt」が無い状態で、Spring Bootアプリケーションを起動し、「http:// (ホスト名):(ポート番号)」とアクセスすると、以下のエラー画面(error.html)が表示される。
実行結果(エラー時)

JUnitのプログラムの作成と実行

テスト対象のコントローラクラス「DemoController.java」から呼ばれるコンポーネントクラス「DemoComponent.java」で例外を発生させた場合の、JUnitのサンプルプログラムの内容は以下の通り。
下記の「testDemoControllerNotFoundException」「testDemoControllerIOException」メソッドのように、doThrow句を利用することで、指定したメソッドで指定した例外がスローされるようにMock設定できる。

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

さらに、上記プログラムを実行した結果は以下の通り。
JUnitの実行結果

要点まとめ

  • 指定したメソッドで指定した例外をスローするには、MockitoライブラリのdoThrowメソッドを利用する。