JUnit

JUnitのMockito,PowerMockで引数をもつメソッドの例外処理のテストをしてみた

引数をもつメソッドの戻り値や例外を設定する方法は、MockitoとPowerMockそれぞれで異なっていることがわかったので、今回は防備録として、そのサンプルプログラムを共有する。

前提条件

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

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

やってみたこと

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

 

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

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

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

「EaseUS Todo Backup」は様々な形でバックアップ取得が行える便利ツールだったパソコン内のデータを、ファイル/パーティション/ディスク等の様々な単位でバックアップしたり、バックアップのスケジュール設定や暗号化設定も...

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



さらに、正常時に遷移するindex.html、エラー時に遷移するerror.htmlは以下の通り。



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

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

ファイルの準備2 ファイルの準備3

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

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



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

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



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

上記サンプルプログラムのように、PowerMockitoでwhen句を利用する場合は、第一引数にstaticメソッドを含むクラス名.classを、第二引数にメソッド名を、第三引数以降にメソッドの引数(任意値はMockito.any()で指定)を指定することで、引数を含むメソッドの戻り値や例外を設定できる。

また、Mockitoでwhen句を利用する場合は、when句の後に指定するメソッドに引数(任意値はMockito.any()で指定)を指定すればよい。

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

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

要点まとめ

  • PowerMockitoでwhen句を利用する場合は、第一引数にstaticメソッドを含むクラス名.classを、第二引数にメソッド名を、第三引数以降にメソッドの引数(任意値はMockito.any()で指定)を指定すれば、引数を含むメソッドの戻り値や例外を設定できる。
  • Mockitoでwhen句を利用する場合は、when句の後に指定するメソッドに引数(任意値はMockito.any()で指定)を指定すればよい。