我正在开发使用Java序列化的插件API。这个想法类似于SmallTalk的系统图像。我想知道如何最好地自动化测试,我所做的更改是否会破坏反序列化,因为某些更改似乎是无害的,例如向实现的接口添加方法(只要没有调用,否则它将导致一个AbstractMethodException
)。
是的,这更像是针对实验性峰值而不是生产代码,因此请不要建议不使用序列化。
答案 0 :(得分:5)
为了向后兼容数据,请以二进制形式保留大量旧消息,并查看是否仍然可以使用新代码对它们进行反序列化。
为了向后兼容代码,您需要一些构建旧代码的方法(例如,每个版本一个版本),并针对从最新版本的代码创建的数据进行测试。这是一个更具挑战性的问题 - 您可能希望在每个适当的版本上构建一个小测试jar,并同时将 放入源代码控制中,以避免不得不一次又一次地构建相同的代码。然后,您的测试将针对新代码的输出尝试所有不同的jar文件。
老实说,这听起来像是一个实验性峰值的大量工作。对于实际工作,我当然只使用protocol buffers:)