1. 소개
이 짧은 예제에서는 Mockito의 지연 검증을 살펴보겠습니다.
빠른 실패 대신 Mockito를 사용하면 테스트가 끝날 때 수집되고 보고된 모든 결과를 볼 수 있습니다.
2. 메이븐 의존성
Mockito 의존성을 추가하여 시작하겠습니다 .
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.21.0</version>
</dependency>
3. Lazy 검증
Mockito의 기본 동작은 첫 번째 실패에서 즉 열심히 중지하는 것입니다 . 이 접근 방식은 fail-fast 라고도 합니다 .
때로는 이전 실패에 관계없이 모든 검증을 실행하고 보고해야 할 수도 있습니다.
VerificationCollector 는 테스트 메서드의 모든 검증을 수집하는 JUnit 규칙입니다.
오류가 있는 경우 테스트가 끝날 때 실행되고 보고됩니다.
public class LazyVerificationTest {
@Rule
public VerificationCollector verificationCollector = MockitoJUnit.collector();
// ...
}
간단한 테스트를 추가해 보겠습니다.
@Test
public void testLazyVerification() throws Exception {
List mockList = mock(ArrayList.class);
verify(mockList).add("one");
verify(mockList).clear();
}
이 테스트가 실행되면 두 검증의 실패가 모두 보고됩니다 .
org.mockito.exceptions.base.MockitoAssertionError: There were multiple verification failures:
1. Wanted but not invoked:
arrayList.add("one");
-> at com.baeldung.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:21)
Actually, there were zero interactions with this mock.
2. Wanted but not invoked:
arrayList.clear();
-> at com.baeldung.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:22)
Actually, there were zero interactions with this mock.
VerificationCollector 규칙이 없으면 첫 번째 확인만 보고됩니다.
Wanted but not invoked:
arrayList.add("one");
-> at com.baeldung.mockito.java8.LazyVerificationTest.testLazyVerification(LazyVerificationTest.java:19)
Actually, there were zero interactions with this mock.
4. 결론
Mockito에서 지연 검증을 사용하는 방법을 간단히 살펴보았습니다.
또한 항상 그렇듯이 코드 샘플은 GitHub 에서 찾을 수 있습니다 .