> Java > java지도 시간 > @Mock, @MockBean 또는 Mockito.mock() 중 어떤 모의 접근 방식이 귀하에게 적합합니까?

@Mock, @MockBean 또는 Mockito.mock() 중 어떤 모의 접근 방식이 귀하에게 적합합니까?

Susan Sarandon
풀어 주다: 2024-10-26 06:52:30
원래의
660명이 탐색했습니다.

 Which Mocking Approach is Right for You: @Mock, @MockBean, or Mockito.mock()?

@Mock, @MockBean 및 Mockito.mock()의 차이점 이해

단위 테스트에는 종종 모의 종속성이 포함되지만 Java에서는 이를 수행하는 다양한 접근 방식이 있습니다. 이러한 옵션을 구별하기 위해 @Mock, @MockBean 및 Mockito.mock()의 고유한 목적과 기능을 살펴보겠습니다.

@Mock 및 Mockito.mock()

@Mock 및 Mockito.mock()은 모두 모의 생성을 위한 주석 기반 구문과 직접적인 메서드 호출을 제공하는 Mockito 라이브러리에서 유래합니다.

@RunWith 주석과 함께 @Mock을 사용하면 Mockito가 활성화됩니다. 테스트 실행 중 주석. 이 주석은 연결된 변수를 Mockito 모의 변수로 표시합니다.

import org.mockito.Mock;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;

@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {
    @Mock
    private MyService myservice;
}
로그인 후 복사

반대로 Mockito.mock()은 모의 변수를 직접 생성합니다.

import org.mockito.Mockito;
...
MyService myservice = Mockito.mock(MyService.class);
로그인 후 복사

@MockBean from 반면에 Spring Boot

@MockBean은 Spring Boot 테스트 라이브러리, 특히 org.springframework.boot.test.mock.mockito.MockBean 클래스에서 제공됩니다. 이 주석은 Spring Boot 컨텍스트와 함께 사용하도록 특별히 설계되었습니다.

@MockBean을 사용하면 Spring ApplicationContext에 모의 Bean을 추가하여 실제 Bean 인스턴스 대신 모의를 효과적으로 재정의하거나 추가할 수 있습니다.

올바른 옵션 선택: Classic Mockito 대 @MockBean

사용 시기는 테스트 시나리오 및 종속성 관리 방법에 따라 다릅니다.

  • Classic Mockito: Spring Boot 컨테이너에 의존하지 않고 테스트된 구성 요소를 격리하려는 단위 테스트에 이상적입니다. 이 접근 방식은 매우 효율적이며 격리를 촉진합니다.
  • @MockBean: Spring Boot 컨테이너와의 상호 작용이 필요한 테스트, 특히 컨테이너에서 관리하는 빈을 모의할 때 선호됩니다.

Spring WebMVC의 일반적인 @MockBean 사용

예를 들어 @WebMvcTest로 주석이 달린 웹 테스트 시나리오에서 @MockBean은 일반적으로 테스트 중인 컨트롤러에서 사용하는 모의 Bean에 사용됩니다.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;
...
@WebMvcTest(FooController.class)
public class FooControllerTest {
    @Autowired
    private MockMvc mvc;

    @MockBean
    private FooService fooServiceMock;
}
로그인 후 복사

이러한 차이점을 이해하고 테스트 요구 사항에 따라 적절한 접근 방식을 선택하면 Mockito 및 Spring Boot를 사용하여 Java에서 종속성을 효과적으로 관리하고 효율적이고 정확한 테스트를 보장할 수 있습니다.

위 내용은 @Mock, @MockBean 또는 Mockito.mock() 중 어떤 모의 접근 방식이 귀하에게 적합합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿