アーシの毎日インプット

毎日1つ以上学習する。学習した内容を公開する。を目標に自分のスキルアップを目指します。

【JUnit】Mockの実行何回目かで挙動を変える

スポンサードリンク

Java単体テストJUnitで行っているとき、

特定の箇所の挙動確認でMockをしたとき、同一メソッドを呼んでいる他の箇所でも同じようにMockされテストが上手くいかないということがあると思います。

 

実はJUnitで使用するMockitoでは、Mock時の戻り値や例外を複数回書いてあげることによって、複数回目の処理の処理結果を変更することができるんです。

 

例えば以下のようにテストソースを書いた時、

when(mockClass.mockmethod()).thenReturn("xxx").thenReturn("yyy").thenThrow(new IOException())

 

動作させた処理で

1回目にmockClass.mockmethod()が呼び出された際は"xxx"を返却し、

2回目にmockClass.mockmethod()が呼び出された際は"yyy"を返却し、

3回目にmockClass.mockmethod()が呼び出された際はIOExceptionの例外を投げるといったような記述が可能です。

 

これを使うことで特定の箇所をMockしたいときに他の箇所も併せてMockしてしまい上手くテストできない現象を解消できます。

 

 

 

より詳しいやり方は私が参考にしたサイトを見てください。

Mockitoでメソッドの呼び出し回数によって異なる結果を返す方法 - Reasonable Code

【アーシの原点】

【頭を鍛える迷路集】


スポンサードリンク