mockitoのdoAnswerを使ったユニットテスト方法

  •  
 
yokoe に投稿

タグ

概要

今回は、業務にて処理内でコピーしたファイルを同じ処理内で削除する処理でIOExceptionを発生させ例外処理が行われるかをテストするユニットテストを作成した。
そこで使用したmockitoのdoAnswerを使いユニットテストを作成したため、mockitoのdoAnswerの使用方法についてサンプルと合わせて説明する。

mockitoのdoAnswerの使用方法

mockitoのdoAnswerは以下のような記述で使用することができる。

XXX xxx = mock(XXX.class);
doAnswer(invocation -> { <-- 1 -->
    <-- 2 -->
    return "AAA"; <-- 3 -->
}).when(xxx).yyy(any(), any()); <-- 4 -->

1.doAnswerメソッドを呼び出し引数をラムダ式で記述する。(ラムダ式で記述しな方法もある)
2.XXXクラスのyyyメソッドが呼び出された際に割り込みで処理したい処理を記述する。
3.XXXクラスのyyyメソッドの戻り値を返す。
 ここの戻り値はthneReturn()などで記述する際と同様にXXXクラスのyyyメソッドの返したい戻り値を記述する。
4.doAnswerメソッドの処理がどこで割り込みたいのかを記述する。
 今回の場合はXXXクラスのyyyメソッドが呼ばれた際に実行される。

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。