测试对象串行化:容易被遗漏的重要测试
2010-01-11 00:00:00 来源:WEB开发网这表明,SimpleVariableContext 包含一个对 QualifiedName 对象的引用,QualifiedName 类未标记为 Serializable。我为 QualifiedName 的类签名添加了 implements Serializable,这一次测试顺利通过。
注意,此测试实际上并未验证串行化格式是否正确 —— 只是验证出对象能够来回转换。为测试正确性,您需要生成一些参考文件,以便与类的所有未来版本的输出相比较。
测试反串行化
通常,您不能依赖默认串行化格式来保持类的不同版本间的文件格式兼容性。您必须使用 serialPersistentFields、readObject() 和 writeObject() 方法和/或 transient 修饰符,通过各种方式进行定制。如果您确实对类的串行化格式做出了不兼容的更改,应相应更改 serialVersionUID 字段,以指出您这样做了。
正常情况下,您不会过分关注串行化对象的详细结构。而只是关注最初使用的那种格式随着类的发展得到了维护。一旦类基本上具备了恰当的形式,即可写入一些类的串行化实例,并存储在随后可将其作为参考使用的位置处。(您很可能确实希望多多少少地考虑如何串行化才能确保足够的灵活性,以便应对未来的发展。)
编写串行化实例的程序是临时代码,只需使用一次。实际上,您根本就不应该多次运行这段代码,因为您不希望获得串行化格式中的任何意外更改。例如,清单 4 展示了用于串行化 Jaxen 的 SimpleVariableContext 类的程序:
清单 4. 写入串行化实例的程序import org.jaxen.*;
import java.io.*;
public class MakeSerFiles {
public static void main(String[] args) throws IOException {
OutputStream fout = new FileOutputStream("xml/simplevariablecontext.ser");
ObjectOutputStream out = new ObjectOutputStream(fout);
SimpleVariableContext context = new SimpleVariableContext();
context.setVariableValue("s", "String Value");
context.setVariableValue("x", new Double(3.1415292));
context.setVariableValue("b", Boolean.TRUE);
out.writeObject(context);
out.flush();
out.close();
}
}
- ››测试android手机性能的软件
- ››测试倒计时《侠客行》激活开启
- ››测试CentOS Linux管理器升级安装
- ››对象存储不给高性能计算添堵
- ››测试 Web 2.0 程序所带来的挑战:使用 GUI 恢复性...
- ››测试:IE9平台预览性能6倍于IE8
- ››测试显示Flash与HTML5工作效率相近
- ››测试显示IE8是目前最安全的浏览器Opera垫底
- ››测试 Nexus One 运行 Flash 10.1 的电量消耗情况
- ››测试成功的最简单的32位系统下硬盘安装64位Win7的...
- ››测试对象串行化:容易被遗漏的重要测试
- ››测试与优化您的目标网页(Landing page) 提升转换率...
更多精彩
赞助商链接