【问题标题】:Testing classes implementing java.lang.Serializable to make sure any changes are backwards compaitible测试实现 java.lang.Serializable 的类以确保任何更改都向后兼容
【发布时间】:2015-08-12 15:31:48
【问题描述】:
我正在尝试使用 OpenHFT/Chronicle-Map 和 MapDB 来持久化一个简单的 String -> Foo 数据库。
Foo 可能会随着时间的推移而发展,我想知道人们采用了哪些测试策略来确保任何旧版本的 Foo 持久化都可以继续加载。
我想为每个特定的类从 1 开始 serialVersionUID,将每个特定的序列化版本存储在我签入的文件中并进行测试,以确保我可以读回所有这些文件并且值是我所期望的。
虽然看起来有点手动。
谢谢
【问题讨论】:
标签:
java
unit-testing
testing
serialization
backwards-compatibility
【解决方案1】:
您可以自动化创建序列化文件的过程
- 将每个版本的Foo.java存储在
src/test/resources下
- 测试用例可以在运行时使用JavaCompiler 将
.java 编译为.class
- 使用一次性 ClassLoader 加载每个
.class 版本
- 实例化/填充(可能使用反射)/序列化实例
一旦到位,唯一的维护就是
- 每个版本的源文件
- 人口战略