[java] Mockito의 프록시 관련 기능

Mockito는 자바에서 단위 테스트를 위해 사용되는 인기 있는 mocking 프레임워크 중 하나이다. Mockito의 spy()@Spy를 포함한 프록시 관련 기능은 테스트 대상 코드와 상호작용하는 동안 프록시 객체를 생성하고 조작할 수 있는 유용한 기능을 제공한다.

Mockito의 spy() 메소드

spy() 메소드는 일반 객체를 모킹하거나 실제로 호출할 수 없는 객체의 일부 메소드를 모킹하기 위해 사용된다.

List<String> list = new LinkedList<>();
List<String> spyList = spy(list);

// 특정 메소드 호출을 실제 코드를 실행하거나, 목 객체로 설정
when(spyList.size()).thenReturn(10);

@Spy 어노테이션 사용법

@Spy 어노테이션을 이용하여 테스트 대상 객체의 프록시를 생성하고, 기본 생성자를 통해 객체를 초기화한다.

public class SomeClass {
  List<String> list = new LinkedList<>();
}

// 테스트 클래스
public class SomeClassTest {
  @Spy
  SomeClass someClass;

  // 테스트 메소드
  public void testMethod() {
    // 특정 메소드 호출을 실제 코드를 실행하거나, 목 객체로 설정
    when(someClass.getListSize()).thenReturn(10);
  }
}

위의 예시에서 @Spy 어노테이션을 사용하여 SomeClasslist 필드를 가진 객체에 대한 프록시를 생성하고 특정 메소드를 모킹할 수 있다.

spy() 메소드와 @Spy 어노테이션을 이용하여 Mockito는 실제 객체를 모킹하면서도 일부 메소드를 실제로 실행하게 할 수 있어 효과적인 단위 테스트가 가능하다.

더 자세한 내용은 Mockito 공식 문서를 참고하시기 바랍니다.