이 짧은 튜토리얼에서는 Mockito의 lazy 검증을 살펴보겠습니다. failing-fast 대신 Mockito를 사용하면 테스트가 끝날 때 수집되고 보고된 모든 결과를 볼 수 있습니다.
Mockito 종속성을 추가하는 것부터 시작해 보겠습니다.
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.21.0</version>
</dependency>
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.