Junit返回空指针异常

时间:2019-08-26 19:16:42

标签: java junit nullpointerexception mockito

在以下情况下,我正在写junit

public void request (Message msg) {
    String s = msg.getPayload().getSerial();
}

Junit

@Test
public void requestTest() {
    Message msg = mock(Message.class);
    Mockito.when(msg.getPayload().getSerial()).thenReturn("tet"); --> This returns null
}

任何帮助

2 个答案:

答案 0 :(得分:3)

您还必须模拟有效载荷:

@Test
public void requestTest() {
    Message msg = mock(Message.class);
    Payload payload = mock(Payload.class);
    Mockito.when(msg.getPayload()).thenReturn(payload);
    Mockito.when(payload.getSerial()).thenReturn("tet"); --> This returns null
}

答案 1 :(得分:0)

您还可以使用DEEP STUBSMockito Docu

Mockito.mock(Message.class, Mockito.RETURNS_DEEP_STUBS);

但是请注意,Mockito开发人员本身在文档中添加了警告:

  

警告:常规清洁代码很少需要使用此功能!留给旧代码。

他们用有关Law of Demeter的提示来解释该语句,因此您也可以考虑添加委托方法(如果Message实际上是您控制下的对象)