java - 在 Mockito 中获取 NullpointerException

标签 java nullpointerexception mockito

我有以下实际方法:

public ResponseEntity<Message> catEnter(@PathVariable("catId") BigInteger catId, @RequestBody Catrequest catReq, HttpServletRequest request) throws CatDataException, InvalidCatExcecatption {
    Message message = new Message();
    try {
        message = catManager.submitData(catReq.getMessage(), catId, request);
    } catch (IOException e) {
        throw new CatDataAppException(e.getMessage());
    }
    return (ResponseEntity<Message>) restResponse(message, request.getMethod());
    // Getting null pointer exception in above line
}

我使用mockito作为我的测试代码,如下所示:

@Test
public void submitData() throws Exception {
    Message mes = new Message();
    mes.setCode("00");
    mes.setMessage("hi");
    ResponseEntity<Message> responseentity = ((ResponseEntity<Message>) catController.catEnter(BigInteger.valueOf(3431), catRequest, mockRequest));
}

即使我显式设置了值,我也遇到空指针异常,消息为空?

最佳答案

这里:

在调用生产代码时传递 mockRequest:

ResponseEntity<Message> responseentity = ... catController.catEnter(... mockRequest));

您的生产调用会:

return (ResponseEntity<Message>) restResponse(message, request.getMethod());

所以唯一的结论是:mockRequest为空!

因此,首先确保传递的变量为空;像:

Request mockedRequest = mock(Request.class);

或者,如果 mockedRequest 是测试类中的字段,请使用 @Mock 注释。

除此之外;您可能想做一些模拟规范,例如:

when(mockedRequest.getMethod()).thenReturn( whatever )

但除此之外,您还缺乏许多 Java 的基础知识:

  • 命名约定:变量名称采用驼峰式命名,如entityResponse。通常,测试的命名如 testCatEnter 来表达所测试的方法。
  • 您有强制转换...但不需要它们。
  • 您有相当多的代码......未使用,例如测试方法中的 mes 声明。

长话短说:我有一种感觉,你正在让自己负担过重。首先学习基础知识;然后去寻找先进的 Mockito 东西。

关于java - 在 Mockito 中获取 NullpointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42090542/

相关文章:

java - @Override 注释在 Java 中如何工作?

Java Swing JButton/JLabel : icons are not displayed in their original size

Java:访问与源文件位于同一目录中的文件

android - 字符串数组上的 NullpointerException

java.lang.NullPointerException : Attempt to invoke interface method 'int java.util.List.size()' on a null object reference 4

java - 使用类文件时如何解决 NoClassDefFoundError

java - 尝试使用 Spring 应用程序中的实体管理器从数据库中删除记录后出现 NullPointer 异常

java - Mockito 的 spy 功能失败

android - 使用改造和 rxjava 对 android 应用程序进行单元测试

java - 如何使用 Mockito 模拟 Scala 中的 Void 返回类型?