JAVA · 테스트
Mockito 심화
Mockito로 의존성을 모킹하고 행위를 검증하는 고급 기법입니다.
테스트중급Mockitomockverifywhen
핵심 설명
Mockito로 의존성을 모킹하고 행위를 검증하는 고급 기법입니다.
Java code
// Mockito 의존성: org.mockito:mockito-core:5.8+
// import static org.mockito.Mockito.*;
// import static org.mockito.ArgumentMatchers.*;
// Mockito 패턴 (의사코드)
// class UserServiceTest {
// UserRepository repo = mock(UserRepository.class);
// EmailService email = mock(EmailService.class);
// UserService service = new UserService(repo, email);
//
// @Test
// void createUser_success() {
// // Given: 스텁 설정
// when(repo.save(any(User.class)))
// .thenReturn(new User("1", "홍길동"));
// when(repo.existsByEmail("hong@test.com"))
// .thenReturn(false);
//
// // When: 실행
// User user = service.createUser("홍길동", "hong@test.com");
//
// // Then: 검증
// assertNotNull(user);
// verify(repo).save(any(User.class));
// verify(email).sendWelcome(eq("hong@test.com"), anyString());
// verify(repo, never()).deleteById(anyString());
// verifyNoMoreInteractions(email);
// }
//
// @Test
// void createUser_duplicateEmail() {
// when(repo.existsByEmail("dup@test.com")).thenReturn(true);
//
// assertThrows(DuplicateException.class,
// () -> service.createUser("이름", "dup@test.com"));
//
// verify(repo, never()).save(any());
// }
// }
class Main {
public static void main(String[] args) {
System.out.println("Mockito: mock() -> when().thenReturn() -> verify()");
System.out.println("ArgumentMatchers: any(), eq(), anyString(), argThat()");
}
}학습 팁
verify()로 메서드 호출 횟수(times(), never(), atLeast())를 검증하세요. 행위 검증이 Mockito의 핵심입니다.
주의할 점
when(mock.method())에서 any()와 실제 값을 혼용하면 에러입니다. 모든 인자를 matcher로 통일하거나 eq()로 감싸세요.
자주 묻는 질문
Mockito 심화란 무엇인가요?
Mockito로 의존성을 모킹하고 행위를 검증하는 고급 기법입니다.
Mockito 심화 학습 시 주의할 점은 무엇인가요?
when(mock.method()) 에서 any() 와 실제 값을 혼용하면 에러입니다. 모든 인자를 matcher로 통일하거나 eq() 로 감싸세요.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.