###前提・実現したいこと
業務にて、Junitのテストを行っております。
Mockitoを使用して、テスト対象以外のメソッドをモック化してテストを行っているのですが、テスト対象のpublicメソッドの内部処理にて、戻り値なしのprivateメソッドを呼び出している部分があるのですが、privateメソッドをMock化できません。
業務にて、カバレジ100%にしないといけないため、powerMockは極力、使用せずに、モック化できる方法をご存知にご教授していただければと思います。
(Jmockというものを使っても出来そうな旨までは、調べられていますが、それ用のjarを追加しないといけないため、使用できません。)
以下のようなサンプルイメージになります。
〇テスト対象
public class SamplePrivate {
public int add(int x, int y) {
int z = multiplication(1,1);①
return (x + y + z);
}
protected int minus(int x, int y) { return (x - y); } private int multiplication(int x, int y) { return (x * y); }
}
〇テストコード
public class SamplePrivateTest {
@Test
public void testEqual() {
SamplePrivate sample = new SamplePrivate();
int expected = 10;
int actual = sample.add(8, 2);
Mockito.when(①のメソッドが呼び出されたとき).thenReturn(2); assertEquals(expected, actual); }
}
###試したこと
privateメソッドのため以下のようにアクセス制限を変更させて、
Method method = SamplePrivate.class.getDeclaredMethod("multiplication", int.class, int.class);
method.setAccessible(true);
①に以下のように実行コードを記載。
(int)method.invoke(sample, 8, 2);
そうしても、デバックで追ってみると、実際のコードが読まれてしまいます。
大変情報が少なくて申し訳ありません。
あなたの回答
tips
プレビュー