[java] PowerMock에서의 예외 전파 확인

PowerMock은 자바 개발자들이 테스트 중에 모의 객체를 사용하는 등의 작업을 수행할 수 있게 도와주는 개발 도구입니다. 이번에는 PowerMock을 사용하여 메소드에서 예외를 전파하는지 확인하는 방법에 대해 알아보겠습니다.

예외 전파 확인하기

PowerMock을 사용하여 메소드가 예외를 전파하는지 확인하기 위해서는 다음과 같은 단계를 따라야 합니다.

  1. @PrepareForTest 어노테이션을 사용하여 테스트 대상 클래스를 지정합니다. 예를 들어, ExampleClass라는 클래스를 테스트하려면 @PrepareForTest(ExampleClass.class)라고 작성합니다.
  2. PowerMockito.mockStatic 메소드를 사용하여 정적 메소드를 모의(mock)합니다. 모의하려는 클래스가 StaticUtil이라면 PowerMockito.mockStatic(StaticUtil.class)이라고 작성합니다.
  3. 모의 메소드를 선언하고 원하는 동작과 예외를 설정합니다. 예를 들어, StaticUtil 클래스의 exampleMethod 메소드를 모의하고자 한다면 다음과 같이 작성합니다.
doThrow(new ExampleException("Test Exception")).when(StaticUtil.class);
StaticUtil.exampleMethod(anyString());
  1. 테스트 대상 메소드를 호출합니다. 이때, 모의 메소드(StaticUtil.exampleMethod)를 호출하는 코드가 포함되어야 합니다.
ExampleClass exampleClass = new ExampleClass();
exampleClass.execute(); // 예외가 전파되어야 하는 메소드 호출
  1. 테스트 결과를 검증합니다. 예외가 예상대로 전파되는지 확인하기 위해 아래 코드를 사용할 수 있습니다.
assertThrows(ExampleException.class, () -> exampleClass.execute());
  1. 필요한 경우, 추가적인 검증 작업을 수행합니다.

예외 전파 확인하기 - 전체 코드

@PrepareForTest(ExampleClass.class)
public class ExampleTestClass {
    
    @Test
    public void testExampleClass() {
        PowerMockito.mockStatic(StaticUtil.class);
        
        doThrow(new ExampleException("Test Exception")).when(StaticUtil.class);
        StaticUtil.exampleMethod(anyString());
        
        ExampleClass exampleClass = new ExampleClass();
        exampleClass.execute(); // 예외가 전파되어야 하는 메소드 호출
        
        assertThrows(ExampleException.class, () -> exampleClass.execute());
    }
}

위의 예제 코드에서 ExampleClass는 테스트하려는 대상 클래스이고, StaticUtil은 모의하려는 클래스입니다. StaticUtil 클래스의 exampleMethod 메소드가 예외를 전파하는지 확인하기 위해 ExampleException을 던지도록 모의했습니다. 그리고 ExampleClassexecute 메소드를 호출하여 예외가 예상대로 전파되는지 확인합니다.

PowerMock을 사용하여 예외의 전파 여부를 확인하는 방법에 대해 알아보았습니다. PowerMock을 활용하면 테스트 중에 정적 메소드 등 테스트하기 어려운 부분들을 쉽게 모의(mock)하여 효율적인 테스트를 수행할 수 있습니다.


참고 자료