JUnit

JUnitのPowerMockを利用してprivateメソッドのMock化と呼出確認をしてみた

privateメソッドの場合も、staticメソッドの場合と同様に、PowerMockを利用してMock化することができる。今回は、privateメソッドのMock化と呼出確認を行ってみたので、そのサンプルプログラムを共有する。

前提条件

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

JUnitのPowerMockを利用してstaticメソッドのMock化と呼出確認をしてみたこれまでは、Mockitoを利用してインスタンスメソッドをMock化する方法について記載していたが、今回はstaticメソッドのMock...

サンプルプログラムの内容

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠のうち、「DateCheckUtil.java」がテスト対象のプログラムで、「DateCheckUtilTest.java」が今回新規で作成したプログラムとなる。

DateCheckUtil.javaの内容は以下の通り。そのうち、今回のテストプログラムに関連するのは「checkDate」「isCorrectDate」メソッドとなる。



また、DateCheckUtilTest.javaの内容は以下の通り。

上記プログラムのtestDateCheckUtilCheckDateMockメソッドでは、DateCheckUtil.javaのprivateメソッド「isCorrectDate」をMock化している。PowerMockitoのwhen句で、staticメソッドの場合と同じように、第一引数にstaticメソッドを含むクラス名.classを、第二引数にメソッド名を、第三引数以降にメソッドの引数(任意値はMockito.any()で指定)を指定している。

また、testDateCheckUtilCheckDateVerifyメソッドでは、DateCheckUtil.javaのprivateメソッド「isCorrectDate」の呼出回数と引数を取得している。PowerMockito.verifyPrivateメソッドを利用し、呼出回数はMockito.times句で確認し、invokeメソッド内でメソッド名と引数の指定を行っている。さらに、staticメソッドの場合と同様に、そのメソッド呼出時の引数は、ArgumentCaptorクラスを利用することで取得できる。

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

今回作成した「DateCheckUtilTest.java」の実行結果は以下の通り。
JUnitプログラムの実行結果

要点まとめ

  • privateメソッドの場合も、PowerMockを利用することで、Mock化や呼出回数・引数の確認が行える。