> Java > java지도 시간 > Mockito의 @Mock 주석과 @InjectMocks 주석의 차이점은 무엇입니까?

Mockito의 @Mock 주석과 @InjectMocks 주석의 차이점은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-25 02:20:18
원래의
535명이 탐색했습니다.

What's the Difference Between Mockito's @Mock and @InjectMocks Annotations?

Mockito에서 @Mock과 @InjectMocks의 차이점 이해

Java용 인기 모의 프레임워크인 Mockito는 두 가지 중요한 주석을 제공합니다. Mock과 @InjectMocks. 둘 다 모의 테스트에 필수적이지만 서로 다른 목적을 제공합니다.

@Mock: Mock 생성

@Mock은 모의 객체를 생성하는 데 사용됩니다. 실제 객체의 가짜 또는 시뮬레이션 구현을 나타냅니다. Mock을 사용하면 동작을 제어하고 테스트 내에서 상호 작용을 확인할 수 있습니다. 예를 들면 다음과 같습니다.

@Mock
private SomeDependency someDependency;
로그인 후 복사

이 코드는 SomeDependency 인터페이스의 모의를 생성합니다. 그런 다음 이 모의를 테스트에 사용할 수 있습니다.

@InjectMocks: Injecting Mocks

반면 @InjectMocks는 다른 역할을 합니다. 클래스의 인스턴스를 생성하고 @Mock(또는 @Spy) 주석으로 생성된 모의 객체를 해당 인스턴스에 삽입하는 데 사용됩니다. 이를 통해 실제 인스턴스를 생성하지 않고도 여러 클래스와 해당 종속성 간의 상호 작용을 테스트할 수 있습니다. 예:

@InjectMocks
private SomeManager someManager;
로그인 후 복사

이 경우 someManager는 SomeManager 클래스의 인스턴스입니다. @InjectMocks 주석은 Mockito에게 someDependency 모의를 someManager 인스턴스에 주입하라고 지시합니다.

초기화 및 사용 참고사항

@InjectMocks를 활용하려면 @를 사용하여 모의를 초기화해야 합니다. RunWith(MockitoJUnitRunner.class) 또는 Mockito.initMocks(this) JUnit 4 및 JUnit 5용 @ExtendWith(MockitoExtension.class). 또한 @InjectMocks는 테스트 클래스에서 한 번만 사용해야 하며 테스트 중인 클래스를 나타내는 필드에 배치되어야 한다는 점을 기억하세요.

사용 예

다음 예에서는 @Mock 및 @InjectMocks:

@RunWith(MockitoJUnitRunner.class)
public class SomeManagerTest {

    @InjectMocks
    private SomeManager someManager;

    @Mock
    private SomeDependency someDependency; // this will be injected into someManager
 
    // tests...
}
로그인 후 복사

이 테스트에서는 someDependency 모의가 someManager 인스턴스에 자동으로 삽입되어 상호 작용을 효과적으로 테스트할 수 있습니다.

위 내용은 Mockito의 @Mock 주석과 @InjectMocks 주석의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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