[Spring] Mockito

zini9188·2023년 3월 8일
0

Spring

목록 보기
31/33

Mock이란?

Mock-up(목업)은 실제 제품 이전에 내부적으로 사용하기 위한 가짜 모형을 의미한다.

테스트에서는 가짜 객체를 의미한다.

사용하는 이유?

Mock을 사용함으로써 불필요한 기능을 제거하고 원하는 영역만을 테스팅할 수 있다.


원래대로라면, 회원 등록 기능을 테스트하기 위해 데이터베이스까지 거쳐서 진행해야 하지만, 목업을 통해 이 연결을 끊고 가짜 객체로 대체하여 테스트할 수 있다.

Mockito란

이러한 Mock 객체를 생성하고, 해당 Mock 객체가 진짜처럼 동작하게 하는 역할을 Mockito가 해준다.

Mockito는 Stubbing 메서드를 지원하는데, given(가짜 객체의 메서드).willReturn(가짜 메서드가 반환할 데이터)의 형식으로 사용할 수 있다. 이 Stubbing 메서드를 통해 테스트하고자 하는 계층을 제외한 나머지 계층과의 연동을 끊을 수 있다.

Spring을 사용하는 경우

Mockito를 사용하기 위해서는 클래스 레벨에 @AutoConfigureMockMvc,@SpringBootTest 애너테이션과 가짜 객체로 필요한 객체에 @MockBean 애너테이션을 붙여 사용할 수 있다.`

@SpringBootTest
@AutoConfigureMockMvc
class MemberControllerMockTest {
    @MockBean
    private MemberService memberService;
}

Spring을 사용하지 않는 경우

클래스 레벨에 @ExtendWith(MockitoExtention.class)를 붙여 사용할 수 있다. 이 때 @Mock 애너테이션으로 객체를 Mock 객체로 생성할 수 있으며, @InjectMock 애너테이션으로 Mock 객체를 주입해줄 수 있다.

@ExtendWith(MockitoExtension.class)
public class MemberServiceMockTest {
    @Mock   
    private MemberRepository memberRepository;

    @InjectMocks    
    private MemberService memberService;
}
profile
백엔드를 지망하는 개발자

0개의 댓글