У меня та же проблема с плоскими файлами dbunit xml, которые не синхронизируются при эволюции схемы базы данных, которые требуют изменения данных (даже для таких простых вещей, как добавление обязательных столбцов).
Хотя преобразование всех XML-файлов с использованием некоторых рукописных сценариев является опцией, я все же считаю, что проблему следует решать на другом уровне абстракции, более похожем на способ обработки живых данных: эволюционный дизайн БД.
Инструменты миграции баз данных уже знают о дельта-скриптах, поэтому было бы неплохо иметь своего рода адаптер dbunit.
Если найдена следующая запись в блоге, освещающая проблему:
http://blog.liquibase.org/2007/06/unit-testing-the-database-access-layer.html
Чтобы решить проблему, не позволяющую определениям тестовых данных не синхронизироваться со схемой, вам необходимо создать тестовые данные вместе с базой данных, чтобы они были изменены путем рефакторинга базы данных, выполненного после его первоначального создания. , [..] При включении тестовых данных в изменения базы данных эти данные автоматически сохраняются так же, как и производственные данные. Использование этого метода над набором данных для каждого метода также имеет преимущество в улучшении производительности, поскольку данные вставляются только один раз, ...
но добавляет себя:
но у него есть недостаток в том, что вам нужно обрабатывать все тестовые данные, которые любой метод хотел бы получить в одном месте.
... что, в свою очередь, невозможно для более сложных сценариев, я полагаю. Он продолжает говорить:
Чтобы упростить эту технику, я встроил идею контекстов выполнения в LiquiBase, чтобы вы могли отмечать изменения тестовых данных и применять их только в средах, где вы запускаете модульные тесты. До сих пор я был доволен результатами. Тесты не выполняются, когда есть различия между схемой базы данных и ожидаемым кодом, или когда есть ошибка в моем SQL, и я не потерял ни одного теста из-за рефакторинга базы данных.
Вот ссылка: www.liquibase.org/manual/contexts, но это, по крайней мере, не то, что я хочу, хотя мне было бы хорошо, если я предоставлю свои тестовые данные инструменту переноса БД, я все еще хотел бы держать его очень тест базы данных.
Кто-нибудь думает?