[java] Mockito를 사용하여 실제 객체의 메소드를 호출하는 방법은?

Mockito는 Java에서 단위 테스트를 위해 사용되는 모의 객체 프레임워크입니다. 모의 객체를 사용하면 실제 객체의 동작을 검증하거나 테스트시에 가짜 동작을 정의할 수 있습니다. 하지만 가끔씩 실제 객체의 메소드를 호출하고 싶을 때도 있습니다. 이를 위해 Mockito의 spy 기능을 사용할 수 있습니다.

spy는 실제 객체를 모의 객체로 감싸는 역할을 합니다. 따라서 실제 객체의 메소드를 호출할 때에는 해당 메소드가 실제로 호출되며, 결과값을 반환합니다. 아래의 예시 코드를 참고해주세요.

import static org.mockito.Mockito.*;

public class ExampleClass {

    public String doSomething() {
        return "Real Method Called";
    }
}

public class ExampleTestClass {

    @Test
    public void testRealMethodCall() {
        ExampleClass realObject = new ExampleClass();
        ExampleClass spyObject = spy(realObject);

        doReturn("Spy Method Called").when(spyObject).doSomething();

        assertEquals("Real Method Called", realObject.doSomething());
        assertEquals("Spy Method Called", spyObject.doSomething());
    }
}

위의 예시에서는 ExampleClass라는 실제 객체를 spy로 만들어 ExampleTestClass에서 호출하고 있습니다. doReturn() 메소드를 사용하여 spyObjectdoSomething() 메소드에 가상의 반환값을 지정하고 있습니다. 반면, realObjectdoSomething() 메소드는 실제로 호출되어 원본 반환값을 반환합니다.

이를 테스트하고 있기 때문에, assertEquals() 메소드를 사용하여 반환값을 비교하고 있습니다. 이렇게하면 실제 객체의 메소드를 호출하면서도 모의 객체의 동작을 정의할 수 있습니다.

이상입니다. Mockito를 사용하여 실제 객체의 메소드를 호출하는 방법에 대해 알아보았습니다. 추가적으로 궁금한 점이 있으시면 Mockito 공식 문서를 참고해주세요.

Mockito 공식 문서