测试对象串行化:容易被遗漏的重要测试
2010-01-11 00:00:00 来源:WEB开发网我能否将其串行化?
通常您编写的第一个串行化测试就是用于验证串行化是否可行的测试。即使一个类实现了 Serializable,依然不能保证它能够串行化。例如,如果一个可串行化的容器(如 ArrayList)包含一个不可串行化的对象(如 Socket),则在您尝试串行化此容器时,将抛出 NotSerializableException。
通常,对此测试,您只需在 ByteArrayOutputStream 上写入数据。若未抛出任何异常,测试即通过。如果您愿意,还可测试一些已写入的输出。例如,清单 1 所示代码片段用于测试 Jaxen 的 BaseXPath 类是否可串行化:
清单 1. 此类是否可串行化?public void testIsSerializable()
throws JaxenException, IOException {
BaseXPath path = new BaseXPath("//foo", new DocumentNavigator());
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(out);
oos.writeObject(path);
oos.close();
assertTrue(out.toByteArray().length > 0);
}
测试串行化形式
接下来,您想要编写一个测试,不仅要验证输出得到了显示,还要验证输出是正确的。您可通过两种方式完成这一任务:
反串行化对象,并将其与原始对象相比较。
逐字节地将其与参考 .ser 文件相比较。
我通常会从第一种选择入手,因为它还提供了一个反串行化的简单测试,而且编码和实现相对来说比较容易。例如,清单 2 所示代码片段将测试 Jaxen 的 SimpleVariableContext 类是否可写入并在之后重新读回:
- ››测试android手机性能的软件
- ››测试倒计时《侠客行》激活开启
- ››测试CentOS Linux管理器升级安装
- ››对象存储不给高性能计算添堵
- ››测试 Web 2.0 程序所带来的挑战:使用 GUI 恢复性...
- ››测试:IE9平台预览性能6倍于IE8
- ››测试显示Flash与HTML5工作效率相近
- ››测试显示IE8是目前最安全的浏览器Opera垫底
- ››测试 Nexus One 运行 Flash 10.1 的电量消耗情况
- ››测试成功的最简单的32位系统下硬盘安装64位Win7的...
- ››测试对象串行化:容易被遗漏的重要测试
- ››测试与优化您的目标网页(Landing page) 提升转换率...
更多精彩
赞助商链接