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

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

 2010-01-11 00:00:00 来源:WEB开发网   
核心提示: 此类测试的实现方法与其他任何 JUnit 异常测试相似,只需在应抛出异常的语句两端包围一个 try 块即可,测试对象串行化:容易被遗漏的重要测试(7),随后紧接欲抛出异常的语句之后添加一条 fail() 语句,如果愿意,则维护长期兼容性就会更轻松,您花费在对象串行化单元测试上的时间将为您带来成倍

此类测试的实现方法与其他任何 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 代码所做的一切都是正确的 —— 它很可能会出错!如果您将串行化测试作为测试套件的固定部分,则维护长期兼容性就会更轻松。您花费在对象串行化单元测试上的时间将为您带来成倍的回报,此后调试时您能节省的时间将数倍于投入时间。

上一页  2 3 4 5 6 7 

Tags:测试 对象 串行

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接