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

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

 2010-01-11 00:00:00 来源:WEB开发网   
核心提示: 您只需将一个串行化对象写入文件 —— 而且只需一次,这是您希望保存的文件,测试对象串行化:容易被遗漏的重要测试(6),而不是用于写入的代码,清单 5 展示了 Jaxen 的 SimpleVariableContext 类的兼容性测试:清单 5. 确保文件格式未被更改pub

您只需将一个串行化对象写入文件 —— 而且只需一次。这是您希望保存的文件,而不是用于写入的代码。清单 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,随后您也需要对其进行测试。

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

Tags:测试 对象 串行

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