当前位置: 首页 > 知识库问答 >
问题:

使用when()时获取空指针异常。mockito中的thenreturn()

杨君之
2023-03-14

我试图存根这个方法:QueryUtils.to顺序(排序,根,构建器)和我正在做

when(QueryUtils.toOrder(any(Sort.class), any(Root.class), any(CriteriaBuilder.class)).thenReturn(mock(List.class));

但它进入queryUtils方法体,它会说Sort为null,并抛出一个NPE。但是,当它是存根时,为什么需要进入方法体?我以前没有遇到过这个问题,我认为它不应该关心该方法的内部逻辑是什么。

共有1个答案

赵飞雨
2023-03-14

这里的问题是Mockito无法阻止Java语言。

when(mockedObject.mockedMethod())中。thenReturn()形式执行模拟方法,并将其返回值传递到模拟中,其中Mockito将其与配置的值交换。但是模拟对象是用null初始化的,因此在模拟方法中访问的模拟对象的任何属性都会引发NPE。

要想改变,您应该使用可读性较低的滑动形式doBack(). time(mockObject). mockedMethod()
请注意结尾移动!
在这种形式中,Mockito完全通过多态性阻止模拟方法的执行,并直接返回配置的值。

 类似资料:
  • 我使用下面的命令进行了mockito-junit测试。变量serviceTask是接口的实例,称为serviceTask。我在申报中使用了@Mock 声明: 命令行: 堆栈跟踪: Java语言lang.NullPointerException在sun。反映NativeMethodAccessorImpl。sun上的invoke0(本机方法)。反映NativeMethodAccessorImpl。在

  • 我试图用Powermock和Mockito编写一个JUnit测试用例。我正在从测试用例下面调用一个方法。此方法从method1调用,而该方法调用Method2。我已经添加了@runwith和@preparefortest注释。 //这是我的测试类: 错误跟踪:

  • 我现在使用的是Itext PDFSmartCopy。我正在使用XMLWorker向document对象添加一些业务内容。然后我声明了一个阅读器(用于连接到此文档对象的pdf文件)。然后我用相同的文档对象和输出文件流作为参数调用PdfSmartCopy。然后使用常规步骤将页面复制到文档中, 但如果我使用一个新的文档对象ie而不添加业务内容,则这一块工作得很好。

  • 我是Selenium的新手,在运行下面的脚本时,我会遇到空指针异常,一旦站点调用loads,测试就会停止运行。我无法理解例外的原因。 代码如下: 我得到以下错误: 请帮助我,我做错了什么,提前感谢!

  • 尝试让JUnit与mockito测试一起工作,并在我的测试中获得NPE。我想验证一下,当调用时,紧接着调用了方法。我觉得奇怪的一个问题是,在Mockito上。验证(registrationServiceImpl,Mockito.times(1))。创建注册人(registrationDTO) 方法?IntelliJ只建议界面中的方法? 我的测试代码如下: 下面是我正在测试的代码:

  • 我有一个3节点星火集群。并尝试使用snowflake spark连接器和jdbc驱动程序访问snowflake jdbc:snowflake-jdbc-3.12.4.jar spark-connector:spark-snowflake_2.11-2.7.0-spark_2.4.jar 下面是我的代码: 我在sdf.show()上的调用失败,但有以下例外情况。有什么建议吗?