WEB开发网
开发学院软件开发Java 测试对象串行化:容易被遗漏的重要测试 阅读

测试对象串行化:容易被遗漏的重要测试

 2010-01-11 00:00:00 来源:WEB开发网   
核心提示: 这表明,SimpleVariableContext 包含一个对 QualifiedName 对象的引用,测试对象串行化:容易被遗漏的重要测试(5),QualifiedName 类未标记为 Serializable,我为 QualifiedName 的类签名添加了 implements Seria

这表明,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(); 
 
 } 
 
}

上一页  1 2 3 4 5 6 7  下一页

Tags:测试 对象 串行

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接