2017-10-16 8 views
1

아래 코드는 Java 1.7 및 Mockito 버전이 1.10.19에서 잘 작동합니다. 내가 Mockito의 동일한 버전의 자바 1.8로 이동할 때Mockito 1.10.9와 함께 Java 1.8에서 Any() 메서드가 컴파일되지 않습니다.

@Test 
public void populateUsersEmpty() { 

    // arrange 
    List<UserDTO> users = new ArrayList<UserDTO>(); 

    // act 
    requestBuilder.populateUsers(mxsMessageOutMock, users); 

    // assert 
    verify(mxsMessageOutMock, times(0)).addRecordSet(CreateNewAlertRequestBuilder.MXS_RECORDSETNAME_USERS); 
    verify(mxsMessageOutMock, times(0)).addFieldNewRecord(anyString(), anyString()); 
    verify(mxsMessageOutMock, times(0)).addField(anyString(), any()); 

} 

는하지만 오류 (굵은 글씨) 아래에 보여주는 시작했다. Mockito 웹 사이트를 검사했을 때 Mockito 3이 아직 Java 8을 지원한다는 것을 알았습니다. 그렇다면이 솔루션은 무엇입니까? 나는 그들의 석방을 기다려야합니까 아니면 이것을 고칠 수있는 방법이 있습니까? any() 대신 AnyString()을 전달하려고 시도했지만 코드가 여전히 중단됩니다. anyObject()도 나를 도와주지 않았습니다.

검증 (mxsMessageOutMock, times (0)). addField (anyString(), anyString());

CreateNewAlertRequestBuilderTest.java:436:0::0있어서 addField (문자열, 문자열) 타입에 대한 모호 IMXSMessageOut [개미 : iajc] 오류 7]에서 확인 에러 (mockMessageOut, 시간 (0)) .addField (anyString(), any());

나는 전체 코드 없이는 제안하기가 어렵지만 여기서 코드 조각을 공유 할 수 있음을 알고 있습니다.

+0

@Eugene을 사용하는 이유는 무엇입니까? 그렇지만 그렇게하면 다른 곳에서 코드에 오류가 발생하여이를 해결하는 방법이 혼란 스럽습니다. – user3534759

+0

최신 Mockito 2.x.x로 업그레이드하려고 시도 했습니까? 그것은 당신의 문제를 해결할 수 있습니다. –

+0

이것은 올바른 오류 메시지를 인용하지 않은 것 같습니다. 단일 메소드는 모호 할 수 없습니다. 모호한 메소드 (호출)에 대한 오류 메시지는 후보를 명명해야합니다. 게다가, 왜 다른 방법을 게시했는지 이해가 안됩니다. 이 소스 코드가 오류 메시지의 일부라고 말씀 하시겠습니까? – Holger

답변

1

any(String.class)? addField가 동의하는 경우 String, StringanyString(), anyString()