2017-10-16 44 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()