[java] Mockito를 사용하여 특정 메소드에 전달된 인자들로 다른 메소드를 호출했을 때 예외를 발생시키지 않고 테스트하는 방법은?
가정:
- 테스트하려는 클래스는
TestClass
입니다. TestClass
에는methodA
와methodB
라는 두 개의 메소드가 있습니다.methodA
에서methodB
를 호출하며,methodB
는 예외를 발생시킬 수 있는 로직을 포함하고 있습니다.methodB
를 호출할 때 예외가 발생하지 않도록 테스트하려고 합니다.
다음은 Mockito를 사용하여 이를 수행하는 방법입니다:
- Mockito 라이브러리를 프로젝트에 추가합니다. Maven을 사용한다면,
pom.xml
파일에 다음 의존성을 추가하세요:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.12.4</version>
<scope>test</scope>
</dependency>
- 테스트 클래스에서 Mockito를 가져옵니다:
import static org.mockito.Mockito.*;
TestClass
의 인스턴스를 만듭니다:
TestClass testObj = new TestClass();
TestClass
를 Mock 객체로 만듭니다:
TestClass mockedObj = mock(TestClass.class);
methodB
에서 예외가 발생하지 않도록 Mockito의doNothing()
메소드를 사용합니다:
doNothing().when(mockedObj).methodB();
methodA
를 호출하고,methodB
가 예외를 발생시키지 않는지 확인합니다:
mockedObj.methodA(); // methodB에서 발생하는 예외를 발생시키지 않음
- 예외가 발생하지 않는지를 검증하기 위해 Mockito의
verify()
메소드를 사용합니다:
verify(mockedObj, times(1)).methodB(); // methodB가 정확히 한 번 호출되었는지 검증
이와 같은 방법으로 Mockito를 사용하여 특정 메소드가 예외를 발생시키지 않고 호출되는지 테스트할 수 있습니다. Mock 객체를 사용하여 실제 객체의 동작을 제어하고 예외 상황을 시뮬레이션할 수 있습니다.
참고 문서:
- Mockito 공식 문서: https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html
- Mockito 예제와 튜토리얼: https://github.com/mockito/mockito/wiki/Mockito-Usage