
스프링 부트 3.4부터 @MockBean이 deprecated되고 @MockitoBean으로 변경된 이유Backend/Test2025. 2. 1. 10:58
Table of Contents
스프링 부트 3.4 버전부터는 @MockBean
이 deprecated 되고, @MockitoBean
으로 대체되었다.
여기서 끝내긴 좀 그러니 관련해서 좀 더 글을 써보겠다..
1. @MockBean이란?
@MockBean
은 스프링 부트가 제공하는 어노테이션이다.
가짜 객체(틀만 있는 객체)를 bean으로 만드는 역할을 한다.
예를 들어 service를 만들 때 repository를 사용하는 경우가 많다.
테스트를 진행할 때 repository가 무조건 제대로 작동한다고 가정하고 service에 집중해서 테스트하고 싶을 때 repository를 mock으로 빈 주입을 해준다.
즉, repository는 실제 동작하는 것이 아니라 호출이 되었는지, 되었다면 몇 번이나 되었는지 등의 행위만 검증할 때 사용한다.
사용예시
@MockBean
private MyRepository myRepository;
2. 왜 @MockBean이 deprecated 되었을까?
위에서 말했듯 @MockBean
은 스프링 부트가 제공하는 어노테이션이다. 스프링 프레임워크 6.2부터 @MockitoBean
을 추가하였다.
그래서 스프링 부트가 자체적으로 @MockBean
을 유지하는 대신 프레임워크에서 제공하는 기능을 채택함으로써 중복 기능을 하는 @MockBean
을 제거한 것이다.
3. @MockitoBean
@MockitoBean
은 제공하는 주체가 스프링 부트에서 스프링 프레임워크로 변경되고, 이름이 바뀌었다는 점만 다르다.
즉, 역할은 기존 @MockBean
과 동일하다.
사용예시
@MockitoBean
private MyRepository myRepository;
참고
@nuheajiohc :: nuheajiohc
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!