[java] PowerMock에서의 예외 전파 확인
PowerMock은 자바 개발자들이 테스트 중에 모의 객체를 사용하는 등의 작업을 수행할 수 있게 도와주는 개발 도구입니다. 이번에는 PowerMock을 사용하여 메소드에서 예외를 전파하는지 확인하는 방법에 대해 알아보겠습니다.
예외 전파 확인하기
PowerMock을 사용하여 메소드가 예외를 전파하는지 확인하기 위해서는 다음과 같은 단계를 따라야 합니다.
@PrepareForTest
어노테이션을 사용하여 테스트 대상 클래스를 지정합니다. 예를 들어,ExampleClass
라는 클래스를 테스트하려면@PrepareForTest(ExampleClass.class)
라고 작성합니다.PowerMockito.mockStatic
메소드를 사용하여 정적 메소드를 모의(mock)합니다. 모의하려는 클래스가StaticUtil
이라면PowerMockito.mockStatic(StaticUtil.class)
이라고 작성합니다.- 모의 메소드를 선언하고 원하는 동작과 예외를 설정합니다. 예를 들어,
StaticUtil
클래스의exampleMethod
메소드를 모의하고자 한다면 다음과 같이 작성합니다.
doThrow(new ExampleException("Test Exception")).when(StaticUtil.class);
StaticUtil.exampleMethod(anyString());
- 테스트 대상 메소드를 호출합니다. 이때, 모의 메소드(
StaticUtil.exampleMethod
)를 호출하는 코드가 포함되어야 합니다.
ExampleClass exampleClass = new ExampleClass();
exampleClass.execute(); // 예외가 전파되어야 하는 메소드 호출
- 테스트 결과를 검증합니다. 예외가 예상대로 전파되는지 확인하기 위해 아래 코드를 사용할 수 있습니다.
assertThrows(ExampleException.class, () -> exampleClass.execute());
- 필요한 경우, 추가적인 검증 작업을 수행합니다.
예외 전파 확인하기 - 전체 코드
@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
을 던지도록 모의했습니다. 그리고 ExampleClass
의 execute
메소드를 호출하여 예외가 예상대로 전파되는지 확인합니다.
PowerMock을 사용하여 예외의 전파 여부를 확인하는 방법에 대해 알아보았습니다. PowerMock을 활용하면 테스트 중에 정적 메소드 등 테스트하기 어려운 부분들을 쉽게 모의(mock)하여 효율적인 테스트를 수행할 수 있습니다.