【问题标题】:Any() method fails to compile in Java 1.8 with Mockito 1.10.9Any() 方法无法使用 Mockito 1.10.9 在 Java 1.8 中编译
【发布时间】: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, ti​​mes(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,这对我有用!谢谢

标签: junit ant java-8 mockito


【解决方案1】:

any(String.class)?如果 addField 接受 String, String 为什么不使用 anyString(), anyString()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-14
    • 2010-12-19
    • 1970-01-01
    • 2019-08-20
    • 2011-04-28
    • 2021-03-17
    • 1970-01-01
    • 2018-09-27
    相关资源
    最近更新 更多