[java] Mockito를 사용하여 특정 메소드 호출 시 전달된 인자들로 다른 메소드를 호출한 횟수를 확인하는 방법은?

Mockito는 Java에서 테스트하기 쉬운 코드를 작성할 수 있도록 도와주는 mocking 프레임워크입니다. Mockito의 ArgumentCaptor를 사용하면 특정 메소드 호출 시 전달된 인자들을 캡처하여 가져올 수 있습니다. 이 기능을 활용하여 다른 메소드 호출 횟수를 확인할 수 있습니다.

아래는 Mockito를 사용하여 특정 메소드 호출 시 전달된 인자들로 다른 메소드를 호출한 횟수를 확인하는 예시 코드입니다.

import static org.mockito.Mockito.*;

import org.junit.Test;
import org.mockito.ArgumentCaptor;

public class ExampleTest {
  
  @Test
  public void testMethod() {
    // Mock 객체 생성
    YourClass yourClassMock = mock(YourClass.class);
    
    // ArgumentCaptor 생성
    ArgumentCaptor<YourObject> argumentCaptor = ArgumentCaptor.forClass(YourObject.class);
    
    // 특정 메소드 호출
    yourClassMock.yourMethod(argumentCaptor.capture());
    
    // 인자들로 다른 메소드 호출한 횟수 확인
    verify(yourClassMock, times(1)).anotherMethod(argumentCaptor.getValue());
  }
}

위의 코드에서 YourClass는 테스트해야 할 클래스이고, yourMethod는 테스트 대상 메소드입니다. anotherMethodyourMethod 내에서 호출되는 메소드로서, 특정 인자 값을 사용합니다. ArgumentCaptor를 사용하여 yourMethod 호출 시 전달된 인자들을 캡처한 뒤, anotherMethod 호출 횟수를 확인합니다. 위의 예시에서는 anotherMethod가 1회 호출된 것이 확인되므로, 테스트가 통과할 것입니다.

Mockito를 사용하는 방법에 대한 자세한 내용은 Mockito 공식 문서를 참고하시길 추천합니다. (https://site.mockito.org/)

반드시 목 객체의 생성, 메소드 호출, 캡처한 인자 값 확인, 메소드 호출 횟수 확인 등의 단계를 정확히 구현해야 올바른 결과를 얻을 수 있습니다.