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