기록만이살길

Mockito 2를 사용한 지연 검증

Spring

Mockito 2를 사용한 지연 검증

기록만이살길 2023. 3. 23. 21:33
반응형

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 에서 찾을 수 있습니다 .

res – Junit (guide) (cat=Testing)
참고
  • https://docs.spring.io/spring-framework/docs/current/reference/html
  • https://www.baeldung.com/mockito-lazy-verification
반응형