有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

显示为未定义的java Mockito匹配器参数

我试图模拟应用程序的主类中包含的方法。我想测试一下,当所有参数都成功提交时,应用程序调用正确的方法uploadFiles。when-then返回对如下所示:

NrClient nrClient = (NrClient)Mockito.mock(NrClient.class);
Mockito.when(nrClient.uploadFiles("DF49ACBC8", anyList(), "dl")).thenReturn("");

这显示为运行时异常:“类型MainTest的方法anyString()未定义。” 我有以下几种进口产品:

import org.mockito.Mockito;
import org.mockito.Matchers;

那么为什么这个方法没有定义呢?我的执行中有问题吗

我还尝试了anyString()和anyInt(),得到了相同的结果


共 (2) 个答案

  1. # 1 楼答案

    您应该将其作为编译时错误,而不是异常(除非实际的异常是您有未解决的编译时错误)

    仅导入org.mockito.Matchers意味着您可以使用名称Matchers来表示类中任何地方的org.mockito.Matchers。如果要导入方法,则需要静态通配符导入:

    import static org.mockito.Matchers.*;
    

    或具体方法:

    import static org.mockito.Matchers.anyString;
    import static org.mockito.Matchers.anyList;
    

    或者您可以在调用代码中限定方法名称:

    Mockito.when(nrClient.uploadFiles("DF49ACBC8", Matchers.anyList(), "dl"))
           .thenReturn("");
    
  2. # 2 楼答案

    使用下面的导入

    import static org.mockito.ArgumentMatchers.*;
    

    避免使用Matchers类,因为它现在已被弃用,以避免与Hamcrest组织的名称冲突。汉克雷斯特。Matchers类