测试对象串行化:容易被遗漏的重要测试
2010-01-11 00:00:00 来源:WEB开发网您只需将一个串行化对象写入文件 —— 而且只需一次。这是您希望保存的文件,而不是用于写入的代码。清单 5 展示了 Jaxen 的 SimpleVariableContext 类的兼容性测试:
清单 5. 确保文件格式未被更改public void testSerializationFormatHasNotChanged()
throws IOException, ClassNotFoundException, UnresolvableException {
//deserialize
InputStream in = new FileInputStream("xml/simplevariablecontext.ser");
ObjectInputStream ois = new ObjectInputStream(in);
Object o = ois.readObject();
SimpleVariableContext context = (SimpleVariableContext) o;
// test the result
assertEquals("String Value", context.getVariableValue("", "", "s"));
assertEquals(Double.valueOf(3.1415292), context.getVariableValue("",
"", "x"));
assertEquals(Boolean.TRUE, context.getVariableValue("", "", "b"));
assertEquals("", "");
}
测试不可串行性
默认情况下,类通常是可串行化的。例如,java.lang.Throwable 或 java.awt.Component 的任何子类都会从其祖先继承可串行性。在某些情况下,这也是您希望的结果,但并非总是如此。有的时候,串行化可能会成为安全漏洞,使恶意程序员能够在不调用构造函数或 setter 方法的情况下创建对象,从而规避了您小心翼翼地在类中构建的所有约束性检查。
若您希望类可串行化,就需要测试它,这与您需要测试一个直接实现了 Serializable 的类相同。如果您不希望类可串行化,则应重写 writeObject() 和 readObject(),使两者均抛出 NotSerializableException,随后您也需要对其进行测试。
- ››测试哪种类型的锚文本对排名最有价值
- ››测试android手机性能的软件
- ››测试CentOS Linux管理器升级安装
- ››对象存储不给高性能计算添堵
- ››测试 Web 2.0 程序所带来的挑战:使用 GUI 恢复性...
- ››测试:IE9平台预览性能6倍于IE8
- ››测试显示Flash与HTML5工作效率相近
- ››测试显示IE8是目前最安全的浏览器Opera垫底
- ››测试 Nexus One 运行 Flash 10.1 的电量消耗情况
- ››测试成功的最简单的32位系统下硬盘安装64位Win7的...
- ››测试对象串行化:容易被遗漏的重要测试
- ››测试与优化您的目标网页(Landing page) 提升转换率...
更多精彩
赞助商链接