Lazy Verification with Mockito 2

Dev.Hammy·2024년 4월 1일

Mockito_Tutorial

목록 보기
10/21

1. Introduction

이 짧은 튜토리얼에서는 Mockito의 lazy 검증을 살펴보겠습니다. failing-fast 대신 Mockito를 사용하면 테스트가 끝날 때 수집되고 보고된 모든 결과를 볼 수 있습니다.

2. Maven Dependencies

Mockito 종속성을 추가하는 것부터 시작해 보겠습니다.

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>2.21.0</version>
</dependency>

3. Lazy Verification

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.

0개의 댓글