@Mock vs @MockBean
2023, May 17
- 공통점
- 두개 모두 Mockito를 사용해서 테스트코드에서 mock 객체를 생성할 때 사용하는 annotation
@Mock
- 일반적으로 Spring Test Framework에서 사용된다.
- Mockto.mock()으로도 호출되는 것과 같은 기능이지만, 다른점은 @Mock은 테스트 클래스에서만 사용할 수 있다.
- MockitoAnnotations.initMocks(this)를 호출해서 해당 클래스에서 어노테이션을 처리
- @RunWith(MockitoJunitRunner.class)와 사용
@MockBean
- Spring Boot Test에서 사용된다.
- MockBean을 통해 스프링 어플리케이션 컨텍스트 내의 bean으로써 mock객체를 등록할 수 있다. 만약에 컨텍스트에 해당 bean이 없다면 새로 생성한다.
- 그래서 실제 bean을 대체하고 외부 서비스나 db에 대한 종속성을 제어할 때 사용한다.
- @RunWith(SpringRunner.class)와 사용