HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
남득윤 학습 저장소
/
더 자바, 애플리케이션을 테스트하는 다양한 방법
더 자바, 애플리케이션을 테스트하는 다양한 방법
/
2부 - Mockito
2부 - Mockito
2부 - Mockito

2부 - Mockito

 
스프링 부트를 활용한다면
spring-boot-starter-test 에 이미 mockito의 의존성이 추가 되어있다.
그렇지 않다면 두가지 의존성을 직접 추가하자
 
<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>3.1.0</version> <scope>test</scope> </dependency> <-- Mockito Jupiter - JUnit과 Mockito의 연동 (JUnit의 Extention임) --> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-junit-jupiter</artifactId> <version>3.1.0</version> <scope>test</scope> </dependency>
 

Mock을 활용한 테스트를 작성하는법

  • Mock을 만드는 방법
  • Mock의 동작을 관리하는 방법
  • Mock의 행동을 검증하는 방법
 
 
  1. Mock을 만드는 방법
MemberService memberService = Mockito.mock(MemberService.class); StudyRepository studyRepository = Mockito.(StudyRepository.class);
Mockito.mock 사용
 
  1. @Mock 어노테이션 활용
  • 클래스에 @ExtendWith(MockitoExtension.class) 있어야함
@Mock MemberService memberService; @Mock StudyRepository studyRepository;
필드에 @Mock 추가
@Test void createStudyService(@Mock MemberService memberService, @Mock StudyRepository studyRepository) { ... }
테스트 메소드의 파라미터에 추가
 
  1. Mock Object Stubbing
기본적으로 모든 Mock 객체는
  • null을 return
  • Optional 타입은 Optional.empty
  • primitive 타입은 기본 primitive 값
  • collection은 빈 콜렉션
  • void 를 리턴하는 메소드는 예외를 던지지 않고 아무것도 하지 않음
 
@Test void createNewStudy(@Mock MemberService memberService, @Mock StudyRepository studyRepository) { StudyService studyService = new StudyService(memberService, studyRepository); assertNotNull(studyService); Member member = new Member(); member.setId(1L); member.setEmail("keesun@email.com"); Mockito.when(memberService.findById(ArgumentMatchers.any())) .thenReturn(Optional.of(member)) .thenThrow(new RuntimeException()) .thenReturn(Optional.empty()); Optional<Member> byId = memberService.findById(1L); assertEquals("keesun@email.com", byId.get().getEmail()); assertThrows(RuntimeException.class, () -> { memberService.findById(2L); }); assertEquals(Optional.empty(), memberService.findById(3L)); }