부트캠프 기록/Section3

[Spring MVC] Mockito

bbangduck 2022. 11. 13. 14:33

mockito란

테스트 세계에서의 Mock은 가짜 객체를 의미

Mocking: 단위 테스트나 슬라이스 테스트 등에 Mock 객체를 사용하는 것 

Mockito: Mock 객체로 Mocking 할 수 있게 해주는 Mocking Framework

Mockito에서 가짜 객체를 만들기 위해 Dynamic Proxy 기술을 이용

Dynamic Proxy는 핵심 기능을 수행하기 전에 부가 기능을 적용하기 위해 주로 사용

Mockito는 부가 기능을 적용하기 위함이 아니라 가짜 객체가 진짜인 척 동작을 수행하기 위함

 

필요성

슬라이스 테스트의 목적인 해당 계층 영역에 대한 테스트에 집중하기를 달성하기 위해서

만약 mocking을 하지 않는다면 슬라이스 테스트라기 보단 통합 테스트에 가까움

 

Controller에 적용

@MockBean: Application Context에 등록돼 있는 Bean에 대한 Mockito Mock 객체를 생성하고 주입

 

Service에 적용

1. @ExtendWith(MockitoExtension.aclss) : Spring 을 사용하지 않고 Junit에서 Mockiton의 기능을 사용하기 위함

2. @Mock : Mockito가 Mock 객체 생성

3. @InjectMocks: @Mock 애너테이션으로 생성된 Mock 객체를ㄹ 해당 필드에 주입

 

 

Mock , Spy, Stub 차이에 관한 글

 

Mock, Spy, Stub, Dummy의 차이점

최근 테스트 코드를 작성하면서 mock, spy, stub이라는 단어를 접하게 되었는데 무슨 차이가 있는지 잘 모르는 상태에서 테스트 코드를 작성하면 나중에 분명 그 대가(?)를 치르게 됨을 알고있어서

medium.com