[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()
메소드를 사용하여 spyObject
의 doSomething()
메소드에 가상의 반환값을 지정하고 있습니다. 반면, realObject
의 doSomething()
메소드는 실제로 호출되어 원본 반환값을 반환합니다.
이를 테스트하고 있기 때문에, assertEquals()
메소드를 사용하여 반환값을 비교하고 있습니다. 이렇게하면 실제 객체의 메소드를 호출하면서도 모의 객체의 동작을 정의할 수 있습니다.
이상입니다. Mockito를 사용하여 실제 객체의 메소드를 호출하는 방법에 대해 알아보았습니다. 추가적으로 궁금한 점이 있으시면 Mockito 공식 문서를 참고해주세요.