[java] PowerMock에서의 메서드 호출 확인 방법

PowerMock은 Java에서 모의 객체 및 정적 메서드 호출 등을 테스트하기 위한 도구입니다. 이 도구를 사용하면 특정 메서드가 호출되었는지 여부를 확인할 수 있으며, 이는 테스트 케이스의 검증에 유용합니다.

PowerMockito.verifyStatic 메서드를 사용하여 정적 메서드 호출 확인

PowerMockito 라이브러리를 사용하면 정적 메서드 호출을 확인할 수 있습니다. 아래는 PowerMockito.verifyStatic 메서드를 사용하여 정적 메서드 호출을 확인하는 방법을 보여주는 예제 코드입니다.

import static org.powermock.api.mockito.PowerMockito.verifyStatic;
import static org.mockito.Mockito.times;

public class MyClassTest {
   
    @Test
    public void testStaticMethodCall() {
        PowerMockito.mockStatic(MyClass.class);
        
        // 특정 메서드 호출 후
        MyClass.myStaticMethod();
        
        // 정적 메서드가 한 번 호출되었는지 확인합니다.
        verifyStatic(times(1));
        MyClass.myStaticMethod();
    }
}

위의 예제 코드에서는 MyClass.myStaticMethod() 메서드가 한 번 호출되었는지를 검증하고 있습니다. 만약 이 메서드가 두 번 이상 호출되었을 경우 times(n) 메서드를 사용하여 호출 횟수를 변경할 수 있습니다.

PowerMockito.verify 메서드를 사용하여 일반 객체의 메서드 호출 확인

PowerMockito는 일반 객체의 메서드 호출도 확인할 수 있습니다. 아래는 PowerMockito.verify 메서드를 사용하여 일반 객체의 메서드 호출을 확인하는 방법을 보여주는 예제 코드입니다.

import org.mockito.Mockito;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.times;

public class MyClassTest {
   
    @Test
    public void testMethodCall() {
        MyClass myObj = Mockito.mock(MyClass.class);
        
        // 특정 메서드 호출 후
        myObj.myMethod();
        
        // myMethod가 한 번 호출되었는지 확인합니다.
        verify(myObj, times(1)).myMethod();
    }
}

위의 예제 코드에서는 myObj.myMethod() 메서드가 한 번 호출되었는지를 검증하고 있습니다. 마찬가지로 메서드가 두 번 이상 호출되었을 경우 times(n) 메서드를 사용하여 호출 횟수를 변경할 수 있습니다.

결론

PowerMock을 사용하면 테스트 케이스에서 특정 메서드의 호출 여부를 확인할 수 있습니다. 이를 통해 코드의 동작을 정확히 검증하고 버그를 찾아내는 데 도움을 줄 수 있습니다.

참고 자료