인프런의 "더 자바, 애플리케이션을 테스트하는 다양한 방법”을 보고 정리한 것임

1. Mockito란?

  • Mock을 지원하는 Framework
  • Mock은 진짜 객체와 비슷하게 동작하지만 프로그래머가 직접 그 객체의 행동을 관리하는 객체, 가짜 객체임
  • Mockito는 Mock 객체를 쉽게 만들고 관리하고 검증할 수 있는 방법을 제공

2. Mockito 시작하기

  • 스프링 부트 2.2+ 프로젝트 생성시 spring-boot-starter-test에서 자동으로 Mockito 추가해 줌
  • 스프링 부트 쓰지 않는다면, 의존성 직접 추가
    • Maven 기준
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>3.1.0</version>
            <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-junit-jupiter</artifactId>
            <version>3.1.0</version>
            <scope>test</scope>
        </dependency>

3. Mock 객체 만들기

Mockito.mock() 메소드로 만드는 방법

class StudyServiceTest {

    @Test
    void create_study_service() {
        MemberService memberService = mock(MemberService.class);
        StudyRepository studyRepository = mock(StudyRepository.class);

        StudyService studyService = new StudyService(memberService, studyRepository);

        assertNotNull(studyService);
    }
}

@Mock 애노테이션으로 만드는 방법

  • JUnit 5 extension으로 MockitoExtension을 사용해야 한다.

1) 필드

@ExtendWith(MockitoExtension.class)
class StudyServiceTest {

    @Mock
    MemberService memberService;

    @Mock
    StudyRepository studyRepository;

    @Test
    void create_study_service() {

        StudyService studyService = new StudyService(memberService, studyRepository);

        assertNotNull(studyService);
    }
}

2) 메소드 매개변수

@ExtendWith(MockitoExtension.class)
class StudyServiceTest {
    
    @Test
    void createStudyService(@Mock MemberService memberService,
                            @Mock StudyRepository studyRepository) {
        StudyService studyService = new StudyService(memberService, studyRepository);
        assertNotNull(studyService);
    }

}
profile
고우고우~

0개의 댓글