JUnit

JUnitのPowerMockを利用してstaticメソッドの例外処理のテストをしてみた

staticメソッドについても、PowerMockを利用すれば、例外を発生させるJUnitプログラムを作成できる。今回は、PowerMockを利用して、下記「前提条件」とサンプルプログラムを作成してみたので、共有する。

前提条件

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

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

やってみたこと

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

 

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

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

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



また、上記プログラムから呼び出されるユーティリティクラスの内容は以下の通りで、staticメソッドになっている。

さらに、本プログラムを実行した結果は、前提条件の記事の「テスト対象プログラムの実行」に記載した通りとなる。



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

build.gradleの内容は以下の通り。PowerMockが利用できるための設定を追加している。

また、テスト対象のコントローラクラス「DemoController.java」から呼ばれるユーティリティクラス「DemoUtil.java」で例外を発生させた場合の、JUnitのサンプルプログラムの内容は以下の通り。

上記の「testDemoControllerNotFoundException」「testDemoControllerIOException」メソッドのように、PowerMockito.doThrow句を利用することで、指定したクラスの指定したstaticメソッドを実行した際に、指定した例外がスローされるようにMock設定できる。

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

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

要点まとめ

  • PowerMockito.doThrow句を利用することで、指定したクラスの指定したstaticメソッドを実行した際に、指定した例外がスローされるようにMock設定できる。