..
Mockito: 비즈니스 로직 단위 테스트를 위한 Mock 활용법
1. Mockito란?
Mockito는 단위 테스트(Unit Test)를 위해 가짜 객체인 Mock 객체를 쉽고 직관적으로 생성하고 관리할 수 있게 도와주는 프레임워크입니다.
2. 왜 사용하는가?
우리가 테스트하려는 서비스 클래스는 보통 데이터베이스 접근을 위한 Repository나 외부 API 서비스 등 많은 의존성을 맺고 있습니다.
- 문제: 테스트를 할 때마다 실제 DB에 데이터를 넣고 연결을 확인하는 것은 매우 번거롭고 속도가 느립니다.
- 해결: 가상의 객체(Mock)를 만들어 “이 메소드를 호출하면 이런 결과를 줄 거야”라고 미리 정의해둠으로써, 순수하게 비즈니스 로직에만 집중하여 테스트할 수 있습니다.
3. 핵심 사용 절차
1) 가짜 객체(Mock) 생성
UserService mockService = Mockito.mock(UserService.class);
2) 동작 정의 (Stubbing)
해당 객체의 메소드가 호출될 때 반환할 값을 지정합니다.
// findById(1)을 호출하면 id가 1인 가짜 객체를 반환하라고 약속
Mockito.when(mockService.findById(1))
.thenReturn(new User(1, "홍길동"));
3) 검증 (Verification)
AssertJ 등의 Assertions 도구를 사용하여 실제 결과값과 기대값이 일치하는지 확인합니다.
User result = userService.getUserInfo(1);
Assertions.assertThat(result.getName()).isEqualTo("홍길동");
Mockito를 잘 활용하면 주변 환경(DB, 네트워크 등)에 구애받지 않고 언제 어디서나 빠르게 수행 가능한 견고한 테스트 코드를 작성할 수 있습니다.