이 요리책은 다양한 사용 사례에서 Mockito 검증을 사용하는 방법을 보여줍니다.
요리책의 형식은 예제 중심이고 실용적이므로 불필요한 세부 정보나 설명이 필요하지 않습니다.
우리는 간단한 list 구현을 흉내낼 것입니다:
public class MyList extends AbstractList<String> {
@Override
public String get(final int index) {
return null;
}
@Override
public int size() {
return 1;
}
}
모의에서 간단한 호출을 확인합니다.
List<String> mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList).size();
모의와의 상호작용 수를 확인합니다.
List<String> mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList, times(1)).size();
전체 모의 객체와의 상호 작용이 발생하지 않았는지 확인합니다.
List<String> mockedList = mock(MyList.class);
verifyNoInteractions(mockedList);
특정 메소드와의 상호작용이 발생하지 않았는지 확인하십시오.
List<String> mockedList = mock(MyList.class);
verify(mockedList, times(0)).size();
예상치 못한 상호 작용이 없는지 확인합니다. 이 작업은 실패합니다.
List<String> mockedList = mock(MyList.class);
mockedList.size();
mockedList.clear();
verify(mockedList).size();
assertThrows(NoInteractionsWanted.class, () -> verifyNoMoreInteractions(mockedList));
상호작용 순서를 확인합니다.
List<String> mockedList = mock(MyList.class);
mockedList.size();
mockedList.add("a parameter");
mockedList.clear();
InOrder inOrder = Mockito.inOrder(mockedList);
inOrder.verify(mockedList).size();
inOrder.verify(mockedList).add("a parameter");
inOrder.verify(mockedList).clear();
상호작용이 발생하지 않았는지 확인합니다.
List<String> mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList, never()).clear();
상호작용이 특정 횟수 이상 발생했는지 확인합니다.
List<String> mockedList = mock(MyList.class);
mockedList.clear();
mockedList.clear();
mockedList.clear();
verify(mockedList, atLeast(1)).clear();
verify(mockedList, atMost(10)).clear();
정확한 인수와의 상호 작용을 확인합니다.
List<String> mockedList = mock(MyList.class);
mockedList.add("test");
verify(mockedList).add("test");
유연한/모든 인수와의 상호 작용을 확인합니다.
List<String> mockedList = mock(MyList.class);
mockedList.add("test");
verify(mockedList).add(anyString());
인수 캡처를 사용하여 상호 작용을 확인합니다.
List<String> mockedList = mock(MyList.class);
mockedList.addAll(Lists.<String> newArrayList("someElement"));
ArgumentCaptor<List<String>> argumentCaptor = ArgumentCaptor.forClass(List.class);
verify(mockedList).addAll(argumentCaptor.capture());
List<String> capturedArgument = argumentCaptor.getValue();
assertThat(capturedArgument).contains("someElement");