Mockitoでは対象メソッドが何回実行されたかを検証することが可能です。これにはMockito.verify()メソッドと、times()、never()、atLeast()、atMost()などのメソッドを組み合わせて使用します。
verify()での実行回数の検証
以下は、メソッドの実行回数を検証するための一般的な方法です。
1. メソッドの実行回数が特定回数であることを検証
verify(mockObject, times(n)).methodName();
times(n):指定された回数nだけメソッドが呼ばれたかどうかを検証します。
2. メソッドが1回も実行されなかったことを検証
verify(mockObject, never()).methodName();
never():メソッドが一度も呼ばれていないことを検証します。
3. メソッドが少なくともn回実行されたことを検証
verify(mockObject, atLeast(n)).methodName();
atLeast(n):指定された回数以上でメソッドが呼ばれたかを検証します。
4. メソッドが最大でn回まで実行されたことを検証
verify(mockObject, atMost(n)).methodName();
サンプルコード
以下に、メソッドの実行回数を検証する例を示します。
import static org.mockito.Mockito.*;
import org.junit.Before;
import org.junit.Test;
public class MyServiceTest {
private MyService myService;
@Before
public void setUp() {
// サービスクラスをモック化
myService = mock(MyService.class);
}
@Test
public void testMethodExecutionCount() {
// メソッドを3回呼び出す
myService.someMethod();
myService.someMethod();
myService.someMethod();
// 3回呼ばれたことを検証
verify(myService, times(3)).someMethod();
// 1回も呼ばれていないことを検証(別のメソッド例)
verify(myService, never()).anotherMethod();
// 少なくとも1回は呼ばれたことを検証
verify(myService, atLeast(1)).someMethod();
// 最大で4回まで呼ばれたことを検証
verify(myService, atMost(4)).someMethod();
}
}
説明
myService.someMethod()の呼び出し: メソッドを3回呼び出します。
verifyメソッドで回数を検証:
verify(myService, times(3))で、someMethod()が3回呼ばれたことを検証。
verify(myService, never())で、anotherMethod()が1回も呼ばれていないことを検証。
atLeast()やatMost()で、指定された範囲内で呼ばれた回数を検証。
このようにして、Mockitoを使えば、対象メソッドが期待通りの回数で呼び出されたかどうかを簡単に確認することができます。