I am mocking ObjectOutputStream void method .writeObject() but it is throwing null pointer exception. How do i mock the void functions using Mockito/PowerMockito.
Class
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
}
}
Test Class
@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
}
}
Stacktrace
java.lang.NullPointerException
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1108)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)