2017-11-21 16 views
-1

Mockito.mock 및 @Mock은 do the same thing으로되어 있습니다. 신기하게도, 조롱 할 때 UriInfo의 경우가 아닌 것 같습니다. JUnit4를 사용하여 내 단위 테스트에서 아래 코드는 작동 :@Mock과 Mockito.mock (UriInfo.class)의 차이점은 무엇입니까?

@Mock 
private UriInfo uriInfo; 
+0

당신이 사용하는 경우 'Mock' @, 당신은'MockitoAnnotations.initMocks (이)'이있으세요를 사용하여 모의 객체를 초기화해야? – pvpkiran

+0

Mockito 조롱 주석을 사용하는 경우'MockitoAnnotations.initMocks (this); '를 호출해야합니다. 이것은 @Before 주석으로 표시된 메소드에서 종종 수행됩니다. – DwB

+0

귀하의 링크에서'테스트 실행 중에 Mockito 주석을 사용하려면 MockitoAnnotations.initMocks (정적) 정적 메소드를 호출해야합니다. '라는 메시지가 표시됩니다. – Oleg

답변

1

것은 당신이 모의 초기화했을 :이 반면

private UriInfo uriInfo = Mockito.mock(UriInfo.class); 

테스트를 실행시 "매개 변수 uriInfo이 설정되지 않습니다"의 오류를 제기?

@Before 
public void before() { 
    MockitoAnnotations.initMocks(this); 
} 

또는 당신은 당신의 테스트 클래스에 대한 특별 주자 사용할 수 있습니다 : 당신의 urlInfo를 조롱 사용합니까

@RunWith(MockitoJUnitRunner.class) 

를? 메소드에 대한 조롱 된 구현을 지정 했습니까? 예를 들어,

when(urlInfo.getPath()).thenReturn("some/path"); 
when(urlInfo.toString()).thenReturn("some/path"); 
+0

예, 나는'@RunWith (MockitoJUnitRunner.class)'를 사용하여 mockito가 테스트를 실행하도록했습니다. –

+0

@TreefishZhang, 그러면 더 많은 코드를 표시해야합니다. – kotslon

+0

uriInfo는 메소드없이 호출되며 객체로 전달됩니다. 테스트중인 클래스는 다른 클래스를 '확장'합니다. 그러나 여기에서 내 질문은 왜 @Mock이 대안과 다른지에 관한 것이다. @Mock은 null을 반환하는 반면 Mockito.mock()은 null이 아닌 값을 반환했습니다. –