测试对象串行化:容易被遗漏的重要测试
2010-01-11 00:00:00 来源:WEB开发网测试驱动的开发的总体原则之一就是应测试一个类已发布的所有接口。如果客户机能够调用方法或访问字段,那么就测试它。但在 Java™ 语言中,许多类都有一个已发布的接口容易被遗漏:通过类实例生成的串行化对象。有时这些类显式实现 Serializable。而有时则是直接从超类继承这一特性。在任何一种情况下,您都应该测试其串行化形式。本文将介绍几种测试对象串行化的方法。
测试串行化
对串行化来说,测试极其重要,因为串行化非常非常容易出错。在修复 bug 或优化类时,非常容易破坏所有已有串行化对象。如果您在更改代码时未考虑串行化,几乎可以肯定您必将破坏原有对象。若您正在为任何形式的持久性存储使用串行化,那么这将是一个严重的 bug。即便仅为流程间的瞬时消息传递(如在 RMI 中)使用对象串行化,更改串行化格式也会使那些各类的版本不完全相同的系统无法顺利交换数据。
幸运的是,若您谨慎对待串行化问题,在处理类时通常可以避免不兼容的更改。Java 语言提供了多种方法,可维护一个类的不同版本之间的兼容性,包括:
serialVersionUID
修饰符
transient
readObject() 和 writeObject()
和
writeReplace()readResolve()
serialPersistentFields
对于这些解决方案来说,最大的问题就在于程序员未使用它们。当您将精力集中在修复 bug、添加特性或解决性能问题时,往往不会停下来思考您的更改对串行化造成的影响。然而串行化是一个涉及范围极广的问题 —— 跨越一个系统的多个不同层。几乎所有更改都会涉及对串行化有某种影响的一个类的实例字段。这正是单元测试发挥作用的时机。在本文后续各节中,我将为您展示一些简单的单元测试,这些单元测试能确保您不会不经意地更改可串行化类的串行格式。
- ››测试哪种类型的锚文本对排名最有价值
- ››测试android手机性能的软件
- ››测试CentOS Linux管理器升级安装
- ››对象存储不给高性能计算添堵
- ››测试 Web 2.0 程序所带来的挑战:使用 GUI 恢复性...
- ››测试:IE9平台预览性能6倍于IE8
- ››测试显示Flash与HTML5工作效率相近
- ››测试显示IE8是目前最安全的浏览器Opera垫底
- ››测试 Nexus One 运行 Flash 10.1 的电量消耗情况
- ››测试成功的最简单的32位系统下硬盘安装64位Win7的...
- ››测试对象串行化:容易被遗漏的重要测试
- ››测试与优化您的目标网页(Landing page) 提升转换率...
更多精彩
赞助商链接