Я создаю сервер непрерывной интеграции (Hudson) для создания проекта Java и запускаю соответствующие тесты unit/integration. Большинство этих тестов обращаются к базе данных, а тестовые данные хранятся в XML файле DbUnit.
Я ищу способ автоматического поддержания схемы тестовой базы данных в актуальном состоянии. В настоящее время SQL script для конкретной версии хранится в каталоге с именем после версии выпуска:
└───scripts
├───0.1.0
├───0.1.1
├───0.1.2
├───0.1.4
Например, SQL script для версии 0.1.4 -
scripts\0.1.4\script-0.1.4.sql
Проблема заключается в том, что эти скрипты содержат смесь изменений схемы (например, ALTER TABLE...) и изменения статических таблиц (например, добавьте новую роль в таблицу USER_TYPE).
В случае модульных тестов я хочу только применить изменения схемы, потому что, как упоминалось выше, все данные для модульных тестов хранятся в XML файле DbUnit. Хотя я мог бы разделить эти два типа изменений базы данных на разные файлы, часто возникает зависимость между изменениями схемы и изменениями данных, которые необходимо будет каким-то образом применять, когда релиз применяется к QA, производству и т.д.
В любом случае, это всего лишь очень длинный способ спросить, есть ли у кого-нибудь надежный способ автоматически обновить свою тестовую схему? Я знаю Unitils имеет некоторую поддержку для поддержания тестовой схемы в актуальном состоянии, но я не уверен, может ли она игнорировать 'операторы обновления данных в сценариях SQL-дельта.