java 테스트 powermock - @Mock과 @InjectMocks의 차이점



4 Answers

테스트 클래스에서 테스트 된 클래스에는 @InjectMocks가 주석으로 표시되어야합니다. 이것은 Mockito에게 mock을 주입 할 클래스를 알려줍니다.

@InjectMocks
private SomeManager someManager;

그 다음부터는 클래스 내부의 특정 메소드 나 오브젝트 (이 경우 SomeManager )를 mock 으로 대체 할 수 있습니다.

@Mock
private SomeDependency someDependency;

이 예제에서는 SomeManager 클래스의 SomeDependency가 조롱을받습니다.

사용법 mockito junit

Mockito 프레임 워크에서 @Mock@InjectMocks 의 차이점은 무엇입니까?




@Mock annotation은 관련 객체를 모의합니다.

@InjectMocks annotation은 @Mock 의해 생성 된 다른 (그리고 관련된) 모의 객체를 기본 객체에 삽입 할 수있게합니다.

둘 다 보완 적입니다.




Mockito가 기반으로하는 "조롱 프레임 워크"는 모의 객체를 생성 할 수있는 프레임 워크입니다 (예전에는 이러한 객체를 종속 기능이라고합니다). 객체가 코드에 의존하는 실제 객체를 모방하는 데 사용되면 조롱 프레임 워크로 프록시 객체를 만듭니다. 테스트에서 모의 ​​객체를 사용하면 기본적으로 일반 단위 테스트에서 통합 테스트로 이동합니다.

Mockito는 MIT 라이센스하에 공개 된 Java 용 오픈 소스 테스팅 프레임 워크이며 깨끗하고 간단한 API로 아름다운 테스트를 작성할 수있는 "조롱 프레임 워크"입니다. 자바 공간에는 다양한 조롱 프레임 워크가 있지만 프록시를 통해 구현되는 모의 객체 프레임 워크와 클래스 매핑을 통해 구현되는 모의 객체 프레임 워크의 두 가지 주요 유형이 있습니다.

Spring과 같은 의존성 주입 프레임 워크는 코드를 수정하지 않고 프록시 객체를 삽입 할 수있게 해준다. mock 객체는 특정 메소드가 호출 될 것으로 기대하고 예상 된 결과를 리턴한다.

@InjectMocks 주석은 테스트 객체 인스턴스를 인스턴스화하고 @Mock 또는 @Spy 로 주석 된 필드를 테스트 객체의 비공개 필드에 주입합니다.

MockitoAnnotations.initMocks(this) 호출은 테스트 객체를 재설정하고 모의 객체를 다시 초기화하므로 @BeforeMethod / @BeforeMethod 주석에이 객체가 있어야합니다.




많은 사람들이 @Mock@InjectMocks 에 대해 훌륭한 설명을 @InjectMocks . 나는 그것을 좋아하지만 테스트와 응용 프로그램을 @InjectMocks 를 사용할 필요가없는 방식으로 작성해야한다고 생각합니다.

추가 예제는 다음을 tedvinke.wordpress.com/2014/02/13/… . tedvinke.wordpress.com/2014/02/13/…




Related