1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Mockitoを使用したJUnitテスト

Last updated at Posted at 2021-12-09

Mockitoに初めて触れました。
絶対に忘れるので少しだけメモ。

##@BeforeEach

各テストの処理前に実行してくれる便利。
事前に必ず実行したい共通の処理があるときに書く。

@BeforeEach
public void setUp() throws Exception {

    Mockito.when(response.getWriter()).thenReturn(responseWriter);

}

##@BeforeEachのモック処理を解除
1テストケースだけBefore処理をスキップしたいとき

 Mockito.reset(response.getWriter());

##今回使用した形式
これが一般的なのかはわからないけれどメモ。

        MockedConstruction<Client> mockedConstruction = 
                Mockito.mockConstruction(Client.class, (mock, context) -> {
                            client = mock;
                            Mockito.when(client.メソッド(any(),eq(Response.class))).thenReturn(Response);

Stringやbooleanには**「eq()」**をつける。
上記の例Clientクラスは対象のクラスの1つ奥の処理のクラスを当てはめるとうまくいった(仕組みがまだよくわかってない)。

ちなみにstaticメソッドの場合は別の書き方がある。
最近Mockitoで出来るようになったらしい。

##JUnitでPrivateメソッドのテストをしたいとき
Mockito関係ないけどお世話になった記事。
https://qiita.com/village/items/2f0d99b25eef0c8fd4ec

例外処理で引っかかったのでメモ。

@Test
@DisplayName("Check List ID :1")
public void checkListID1() throws Exception {

    testTarget = new Service(request);

    Method system = Service.class.getDeclaredMethod("executeMethod");
    system.setAccessible(true);

    try {
        system.invoke(testTarget);
    } catch (Exception e) {
        assertEquals("0000", result);
        assertThrows(BusinessException.class, () -> {
            throw e.getCause();
        });
    }
}

privateメソッド使うときはtry-catchにしてe.getCauseしないとinvokeのエラーになるので注意!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?