[java] Mockito를 사용하여 객체의 private 메소드를 테스트하면서 리턴된 값의 변화를 확인하는 방법은?
- PowerMockito와 Whitebox를 사용하여 private 메소드를 호출합니다. PowerMockito는 Mockito 확장 라이브러리로 private 메소드 호출을 지원합니다.
예를 들어, MyClass라는 클래스에 private 메소드인 privateMethod()가 있다고 가정해봅시다.
public class MyClass {
private int privateMethod() {
// Some logic here
return 10;
}
public int publicMethod() {
int result = privateMethod();
// Some other logic here
return result;
}
}
- Mockito를 통해 MyClass 객체를 mocking합니다.
MyClass myClassMock = Mockito.mock(MyClass.class);
- PowerMockito를 사용하여 MyClass의 private 메소드를 호출하고 리턴값을 확인하는 코드를 작성합니다.
PowerMockito.when(myClassMock, "privateMethod").thenReturn(20);
위의 예제에서는 privateMethod()가 항상 20을 리턴하도록 설정했습니다.
- 테스트에서 MyClass의 publicMethod()를 호출하고 리턴값을 확인합니다.
int returnValue = myClassMock.publicMethod();
assertEquals(20, returnValue);
위의 코드에서는 리턴값이 20인지 확인합니다.
이렇게 Mockito와 PowerMockito를 사용하여 객체의 private 메소드를 호출하고 리턴값의 변화를 확인할 수 있습니다.
참고자료:
- Mockito: https://github.com/mockito/mockito
- PowerMockito: https://github.com/powermock/powermock