Java doNothing()引发空指针异常

Java doNothing()引发空指针异常,java,mockito,powermockito,Java,Mockito,Powermockito,我正在模拟ObjectOutputStream void方法.writeObject(),但它引发空指针异常。 如何使用Mockito/PowerMockito模拟void函数 阶级 测试班 @RunWith(PowerMockRunner.class) @PrepareForTest({ SomeClass.class }) public class SomeClassTest { @Mock private ByteArrayOutputStream byteArr

我正在模拟ObjectOutputStream void方法.writeObject(),但它引发空指针异常。 如何使用Mockito/PowerMockito模拟void函数

阶级

测试班

@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)


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

objectOutputStreamMock = Mockito.mock(ObjectOutputStream.class) 

Mockito.doNothing()可能重复-->PowerMockito.doNothing()尝试此仍然为空的指针异常。MockitoAnnotations.initMocks(this);初始化它。@TheDominus我的错误,错过了它。尝试
Mockito.doNothing().when(objectOutputStreamMock).writeObject(Matchers.eq(otherClass))
objectOutputStreamMock = Mockito.mock(ObjectOutputStream.class)