【发布时间】:2017-10-16 07:40:18
【问题描述】:
我的以下代码适用于 Java 1.7,而 Mockito 版本是 1.10.19。
@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() 代替 any() 但我的代码仍然中断。甚至 anyObject() 也没有帮助我。
verify(mxsMessageOutMock, times(0)).addField(anyString(), anyString());
CreateNewAlertRequestBuilderTest.java:436:0::0 对于 IMXSMessageOut 类型,方法 addField(String, String) 不明确 [ant:iajc] [错误 7]: 验证错误(mockMessageOut, times(0)).addField(anyString(), any());
我知道如果没有完整的代码很难提出建议,但在这里我可以分享一段代码。
【问题讨论】:
-
@Eugene,我同意你的观点,但这样做会使我的代码在其他地方出错,所以我很困惑如何解决这个问题。
-
您是否尝试升级到最新的 Mockito 2.x.x?它可能会解决您的问题。
-
这看起来不像是对错误消息的正确引用。单一的方法不能模棱两可。关于模棱两可的方法(调用)的错误消息应该命名候选人。除此之外,我不明白你为什么最后发布了另一种方法。你是说这个源代码是错误信息的一部分?
-
@Eugene,这对我有用!谢谢