ObjectInputStream测试的EOF异常。

我想测试一下 readObject 读取对象的方法 ObjectInputStream

@Test
public void testReadObject() throws Exception {
    ObjectInputStream in = new ObjectInputStream(System.in);
...
} 

我越来越 java.io.EOFException 对于ObjectInputStream在 ObjectInputStream in = new ObjectInputStream(System.in);.

我是在嘲笑你吗?ObjectInputStream 还是说这是一种不好的做法?我如何编写测试用例以涵盖 readObject 场景作为一个整体?

我的雇员类。

public class Employee {

private Object Teacher;
...
private void readObject(java.io.ObjectInputStream in) throws Exception {
    Teacher = in.readObject();
 }
...
}

注意,我使用的是JUnit和Mockito.

解决方案:

我的方法需要更多的测试代码,但它给了你一个机会来写一个不需要嘲讽的测试。ObjectInputStream:

@Test
void testReadObject() throws Exception {
    String teacherObject = "TeacherObject";
    final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    new ObjectOutputStream(outputStream).writeObject(teacherObject);
    final Employee employee = new Employee();

    employee.readObject(
        new ObjectInputStream(
            new ByteArrayInputStream(
                outputStream.toByteArray()
            )
        )
    );

    assertEquals(teacherObject, employee.getTeacher());
}

注:本测试是根据两个假设编写的。 本测试是在两个假设下进行的。

  1. Employee 类有一个方法 getTeacher(). 因为你需要以某种方式断言 Teacher 正确读出 ObjectInputStream. 如果你有其他方法可以做到这一点–根据你的需要修改我的例子。
  2. Employee.readObject() 方法的可见性是公开的。这样做只是为了简化我的例子。在你的问题中 readObject() 具有私有的可见性。你可以根据你的需要修改我的例子,或者给我更多的上下文,我可以相应地修改我的例子。

P.S. 查看完整的代码 此处.

给TA打赏
共{{data.count}}人
人已打赏
未分类

在日历上获取所有事件的下拉值的第一个索引?

2022-9-13 14:51:39

未分类

Plotly。使用plotly express line时,如何在hoverinfo中格式化日期?

2022-9-13 14:51:41

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索