如何进行单元测试以实现向后兼容?

Sle*_*led 6 java compatibility serialization unit-testing

我正在开发一个使用Java序列化的插件API.这个想法类似于SmallTalk的系统图像.我想知道如何最好地自动化测试,我所做的更改是否会破坏反序列化,因为某些更改似乎是无害的,例如向实现的接口添加方法(只要没有调用,否则它将导致a AbstractMethodException).

是的,这更像是实验性的峰值而不是生产代码,所以请不要建议不要使用序列化.

Jon*_*eet 6

为了向后兼容数据,请以二进制形式保留大量旧消息,并查看是否仍可以使用新代码对它们进行反序列化.

为了向后兼容代码,您需要一些构建旧代码的方法(例如,每个版本一个版本),并针对从最新版本的代码创建的数据进行测试.这是一个更具挑战性的问题 - 您可能希望在每个适当的版本上构建一个小测试jar,并将其同时放入源代码控制中,以避免不得不一次又一次地构建相同的代码.然后,您的测试将针对新代码的输出尝试所有不同的jar文件.

说实话,这听起来像是一个实验性峰值的相当多的工作.对于实际工作,我当然只使用协议缓冲区 :)