2017-10-16 69 views
1

我的下面的代碼適用於Java 1.7,Mockito版本是1.10.19。任何()方法無法在Java 1.8中使用Mockito進行編譯1.10.9

@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 Java 1.8它開始顯示下面的錯誤(粗體字母)。當我檢查Mockito網站時,我發現Mockito 3尚未支持Java 8.如果是,那麼這是什麼解決方案?我是否應該等待他們的發佈或有任何解決方法。我嘗試傳遞任何()的AnyString(),但我的代碼仍然中斷。即使anyObject()也沒有幫助我。

verify(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, String爲什麼你不使用anyString(), anyString()