测试对象串行化:容易被遗漏的重要测试
2010-01-11 00:00:00 来源:WEB开发网此类测试的实现方法与其他任何 JUnit 异常测试相似。只需在应抛出异常的语句两端包围一个 try 块即可,随后紧接欲抛出异常的语句之后添加一条 fail() 语句。如果愿意,您还可在 catch 中作出一些关于所抛出异常的断言。例如,清单 6 验证了 FunctionContext 是不可串行化的:
清单 6. 测试 FunctionContext 是不可串行化的public void testSerializeFunctionContext()
throws JaxenException, IOException {
DOMXPath xpath = new DOMXPath("/root/child");
FunctionContext context = xpath.getFunctionContext();
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream oout = new ObjectOutputStream(out);
try {
oout.writeObject(context);
fail("serialized function context");
}
catch (NotSerializableException ex) {
assertNotNull(ex.getMessage());
}
}
Java 5 和 JUnit 4 使异常测试更为轻松。只需在 @Test 注释中声明所需异常即可,如清单 7 所示:
清单 7. 带有注释的异常测试@Test(expected=NotSerializableException.class) public
void testSerializeFunctionContext()
throws JaxenException, IOException {
DOMXPath xpath = new DOMXPath("/root/child");
FunctionContext context = xpath.getFunctionContext();
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream oout = new ObjectOutputStream(out);
oout.writeObject(context);
}
结束语
串行化格式可以说是代码基础中最脆弱、健壮性最差的部分。有的时候,似乎只要以奇异的眼神盯着它,它就会被破坏。单元测试和测试驱动的开发这些出色的工具使您可以信心十足地管理此类脆弱系统 —— 但只有在您确实使用了这些工具时,它们才能发挥作用。
若您关注对象串行化,特别是希望为长期持久性存储使用串行化对象时,就必须对串行化进行测试。不要假设您的 Java 代码所做的一切都是正确的 —— 它很可能会出错!如果您将串行化测试作为测试套件的固定部分,则维护长期兼容性就会更轻松。您花费在对象串行化单元测试上的时间将为您带来成倍的回报,此后调试时您能节省的时间将数倍于投入时间。
- ››测试哪种类型的锚文本对排名最有价值
- ››测试android手机性能的软件
- ››测试CentOS Linux管理器升级安装
- ››对象存储不给高性能计算添堵
- ››测试 Web 2.0 程序所带来的挑战:使用 GUI 恢复性...
- ››测试:IE9平台预览性能6倍于IE8
- ››测试显示Flash与HTML5工作效率相近
- ››测试显示IE8是目前最安全的浏览器Opera垫底
- ››测试 Nexus One 运行 Flash 10.1 的电量消耗情况
- ››测试成功的最简单的32位系统下硬盘安装64位Win7的...
- ››测试对象串行化:容易被遗漏的重要测试
- ››测试与优化您的目标网页(Landing page) 提升转换率...
更多精彩
赞助商链接