【问题标题】:PowerMockito.doNothing() throws Null Pointer ExceptionPowerMockito.doNothing() 抛出空指针异常
【发布时间】:2019-05-11 11:09:31
【问题描述】:

我在嘲笑 ObjectOutputStream void 方法 .writeObject() 但它抛出空指针异常。 如何使用 Mockito/PowerMockito 模拟 void 函数。

public class SomeClass {
    public void someMethod() {
        //something
        OtherClass Obj = new OtherClass();
        try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
             ObjectOutputStream oos = new ObjectOutputStream(bos)) {
             oos.writeObject(obj);
             // do something
        } catch (IOException e) {
            //do something
        }
        //something
    }
}

测试类

@RunWith(PowerMockRunner.class)
@PrepareForTest({
    SomeClass.class
})
public class SomeClassTest {

    @Mock
    private ByteArrayOutputStream byteArrayOutputStreamMock;
    @Mock
    private ObjectOutputStream objectOutputStreamMock;

    @Test
    public void testSomething() {
        MockitoAnnotations.initMocks(this);
        PowerMockito.whenNew(ByteArrayOutputStream.class).withNoArguments().thenReturn(byteArrayOutputStreamMock);
        PowerMockito.whenNew(ObjectOutputStream.class).withArguments(byteArrayOutputStreamMock).thenReturn(objectOutputStreamMock);
        OtherClass otherClass = new OtherClass();
        Mockito.doNothing().when(objectOutputStreamMock).writeObject(otherClass); //This throw null pointer exception.

        // more code
    }
}

堆栈跟踪

java.lang.NullPointerException
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1108)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)

【问题讨论】:

标签: java mockito powermockito


【解决方案1】:

objectOutputStreamMock 为空。你必须初始化它:

objectOutputStreamMock = Mockito.mock(ObjectOutputStream.class) 

【讨论】:

  • MockitoAnnotations.initMocks(this);初始化它。
  • @TheDominus 我的错误,错过了。试试Mockito.doNothing().when(objectOutputStreamMock).writeObject(Matchers.eq(otherClass))
猜你喜欢
  • 1970-01-01
  • 2020-11-22
  • 2020-08-10
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多