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 중국어 웹사이트의 기타 관련 기사를 참조하세요!