[java] Mockito를 사용하여 Exception을 발생시키는 방법은?

예를 들어, 특정 메서드가 특정 파라미터일 때 예외를 발생시키는지 테스트하고 싶다고 가정해 봅시다. Mockito를 사용하면 다음과 같이 해결할 수 있습니다.

먼저, 예상되는 예외를 정의하는 방법은 두 가지 입니다. 첫 번째 방법은 doThrow를 사용하는 방법입니다.

import static org.mockito.Mockito.*;

// ...

@Test(expected = MyException.class)
public void testMethod() {
  MyService myService = mock(MyService.class);
  when(myService.method(anyString())).thenThrow(new MyException());

  myService.method("someParam");
}

두 번째 방법은 doThrow를 사용하는 방법입니다.

import static org.mockito.Mockito.*;

// ...

@Test
public void testMethod() {
  MyService myService = mock(MyService.class);
  doThrow(new MyException()).when(myService).method(anyString());

  try {
    myService.method("someParam");
    fail("Expected MyException to be thrown");
  } catch (MyException e) {
    // 예외가 발생했을 경우 이 부분이 실행됩니다.
  }
}

doThrow를 사용할 때는 예상되는 예외를 when대신 doThrow와 함께 사용하고, 예외를 발생시키고 싶은 메서드를 when 대신 doThrow와 함께 사용합니다. 그리고 실제로 메서드를 호출할 때 예외가 발생하면 테스트가 통과합니다.

테스트 코드에서 @Test 애노테이션 위에 expected 속성을 사용하면 특정 예외가 발생해야 테스트가 성공한다고 알려줄 수도 있습니다.

이렇게 Mockito를 사용하여 예외를 발생시키는 방법에 대해 알아보았습니다. Mockito의 다양한 기능들을 적절하게 활용하여 테스트 코드를 작성하면 좀 더 견고한 애플리케이션을 개발할 수 있습니다.

출처: