JUnit은 Java에서 단위 테스트를 작성하는 데 사용되는 일반적으로 알려진 프레임워크입니다. 단위 테스트는 개별적인 코드 조각 또는 기능을 격리하여 테스트하는 프로세스입니다. 이를 통해 코드의 정확성을 확인하고 버그를 이해하는 데 도움이 됩니다.
모의 객체(Mockito)는 단위 테스트를 작성할 때 유용한 도구입니다. 모의 객체는 실제 객체와 유사한 동작을 흉내내면서도 프로그래머가 원하는 방식으로 행동할 수 있도록 만들어진 객체입니다. 이를 통해 특정 메소드가 예상대로 동작하는지 검증하고, 협력 객체를 목업하여 테스트에 필요한 환경을 구성할 수 있습니다.
Mockito 설치
Mockito를 사용하기 위해서는 먼저 Mockito 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 의존성을 추가합니다.
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.10.0</version>
<scope>test</scope>
</dependency>
Gradle을 사용하는 경우, build.gradle 파일에 다음 의존성을 추가합니다.
testImplementation 'org.mockito:mockito-core:3.10.0'
의존성을 추가한 후에는 프로젝트를 다시 빌드하여 Mockito를 사용할 준비를 마칠 수 있습니다.
Mockito를 사용한 모의 객체 생성하기
Mockito를 사용하여 모의 객체를 생성하는 방법은 간단합니다. 다음은 Mockito를 사용하여 Calculator 클래스의 모의 객체를 생성하는 예시입니다.
import static org.mockito.Mockito.*;
public class CalculatorTest {
@Test
public void testAdd() {
// 모의 객체 생성
Calculator calculatorMock = mock(Calculator.class);
// 모의 객체의 동작 설정
when(calculatorMock.add(2, 3)).thenReturn(5);
// 모의 객체 사용
int result = calculatorMock.add(2, 3);
// 결과 검증
assertEquals(5, result);
}
}
위의 예시에서는 mock()
메소드를 사용하여 Calculator 클래스의 모의 객체를 생성합니다. when()
메소드와 thenReturn()
메소드를 사용하여 모의 객체의 동작을 설정합니다. 이후에는 모의 객체를 사용하여 메소드를 호출하고, 결과를 검증할 수 있습니다.
Mockito를 사용한 메소드 호출 검증하기
Mockito를 사용하면 특정 메소드가 예상대로 호출되는지 검증할 수 있습니다. 다음은 Mockito를 사용하여 Calculator 클래스의 multiply 메소드가 두 번 호출되는지 검증하는 예시입니다.
import static org.mockito.Mockito.*;
public class CalculatorTest {
@Test
public void testMultiply() {
// 모의 객체 생성
Calculator calculatorMock = mock(Calculator.class);
// 모의 객체 사용
calculatorMock.multiply(2, 3);
calculatorMock.multiply(4, 5);
// 메소드 호출 검증
verify(calculatorMock, times(2)).multiply(anyInt(), anyInt());
}
}
위의 예시에서는 verify()
메소드를 사용하여 multiply()
메소드가 times(2)
와 일치하는 횟수만큼 호출되는지 검증합니다. anyInt()
는 모든 정수 값에 일치한다는 의미입니다.
결론
JUnit에서 Mockito를 사용하여 모의 객체를 생성하고 메소드 호출을 검증하는 방법에 대해 알아보았습니다. Mockito를 사용하면 단위 테스트를 좀 더 효과적으로 작성할 수 있으며, 코드의 정확성을 검증하고 버그를 발견하는 데 도움이 됩니다.
더 많은 Mockito 기능과 사용 예시는 공식 Mockito 문서를 참조하시기 바랍니다.
- Mockito 공식 문서: https://site.mockito.org/
Happy testing!