💭

Mockito(-inline)でstaticメソッドをモックするときの書き方

2022/08/23に公開

Mockito, Mockito Inline を利用して static メソッドをモックする書き方について。

基本は mockito-core/4.0.0 - 48. Mocking static methods (since 3.4.0) 紹介の以下。

try (MockedStatic mocked=mockStatic(Foo.class)) {
  mocked.when(Foo::method).thenReturn("bar");
  assertEquals("bar",Foo.method());
  mocked.verify(Foo::method);
}

ただ、場合によっては以下の書き方も便利かも。例えば以下に該当するときなど。

  • mockedを複数回verifyするとき
  • 複数テストで共通のスタブが必要なとき
private static final
MockedStatic<Foo> mocked = mockStatic(Foo.class);

@AfterAll
static void afterAll(){
  mocked.close();
}

@BeforeEach
void setUp(){
  mocked.reset();
  mocked.when(Foo::method).thenReturn("bar");
}

@Test
void テスト1(){
  assertEquals("bar",Foo.method());
  mocked.verify(Foo::method);
}

@Test
void テスト2(){
  mocked.verify(Foo::method2);
}

Discussion