Как выполнить модульное тестирование на обратную и прямую совместимость? - PullRequest
5 голосов
/ 30 сентября 2011

Я работаю над разработкой API подключаемого модуля, который использует сериализацию Java. Идея похожа на системные образы SmallTalk. Мне было интересно, как лучше всего автоматизировать тестирование на предмет того, будут ли внесенные мной изменения нарушать десериализацию, поскольку некоторые изменения кажутся безвредными, например, добавление метода в реализуемый интерфейс (если он не вызывается, иначе это приведет a AbstractMethodException).

Да, это больше для экспериментального всплеска, а не для производственного кода, поэтому, пожалуйста, не предлагайте не использовать сериализацию.

1 Ответ

5 голосов
/ 30 сентября 2011

Для обратной совместимости данных сохраните множество старых сообщений в двоичном виде и посмотрите, можно ли их десериализовать с помощью нового кода.

Для обеспечения обратной совместимости кода вам потребуется какой-либо способ создания старого кода (например, одна версия на выпуск) и его проверка на соответствие данных, созданных из самой последней версии кода. Это немного более сложная проблема - вы можете создать небольшой тестовый jar для каждого соответствующего выпуска и одновременно поместить , что , в систему контроля версий, чтобы избежать необходимости повторного создания одного и того же кода. Затем ваши тесты будут проверять все различные файлы JAR с выходом нового кода.

Если честно, все это звучит как большая работа для экспериментального всплеска. Для реальной работы я бы просто использовал буферы протокола конечно:)

...