Unit testing ObjectInputStream测试的EOF异常
我正在尝试测试从Unit testing ObjectInputStream测试的EOF异常,unit-testing,junit,mockito,inputstream,datainputstream,Unit Testing,Junit,Mockito,Inputstream,Datainputstream,我正在尝试测试从ObjectInputStream读取对象的readObject方法 @Test public void testReadObject() throws Exception { ObjectInputStream in = new ObjectInputStream(System.in); ... } 我在ObjectInputStream in=new ObjectInputStream(System.in)中获得ObjectInputStream的java.io.
ObjectInputStream
读取对象的readObject
方法
@Test
public void testReadObject() throws Exception {
ObjectInputStream in = new ObjectInputStream(System.in);
...
}
我在ObjectInputStream in=new ObjectInputStream(System.in)中获得ObjectInputStream的java.io.EOFException
代码>
我是模拟ObjectInputStream
还是一种不好的做法?
如何编写一个测试用例来涵盖整个readObject
场景
我的员工类别:
public class Employee {
private Object Teacher;
...
private void readObject(java.io.ObjectInputStream in) throws Exception {
Teacher = in.readObject();
}
...
}
请注意,我使用的是JUnit和Mockito。我的方法需要多一点测试代码,但它让您有机会编写测试,而无需模拟ObjectInputStream
:
@测试
void testReadObject()引发异常{
字符串teacherObject=“teacherObject”;
final ByteArrayOutputStream outputStream=新建ByteArrayOutputStream();
新建ObjectOutputStream(outputStream).writeObject(teacherObject);
最终员工=新员工();
employee.readObject(
新ObjectInputStream(
新ByteArrayInputStream(
outputStream.toByteArray()
)
)
);
assertEquals(teacherObject,employee.getTeacher());
}
注意:本测试是在两个假设下编写的:
Employee
类有一个方法getTeacher()
。因为您需要以某种方式断言从ObjectInputStream
正确读取了Teacher
。如果你有其他方法可以做到这一点-修改我的例子根据你的需要
Employee.readObject()
方法可见性是公共的。这样做只是为了简化我的示例。在您的问题中,readObject()
具有私有可见性。您可以根据需要修改我的示例,或者给我更多的上下文,我可以相应地修改我的示例
p.S.请参阅完整代码