Составьте сценарии тестирования с использованием liquibase для выполнения в порядке с обычными сценариями - PullRequest
0 голосов
/ 12 октября 2019

мы используем liquibase для переноса базы данных в приложении весенней загрузки. В ресурсах у нас есть основной файл журнала изменений, который включает в себя другие журналы изменений (по 1 на версию).

Обычно мы дифференцируем среды по атрибуту контекста liquibase, но для новых нам нужны данные дифференцирования, которые предназначены только для интеграционных тестов и не требуют местаэто рядом с обычными версионными скриптами. Возможно ли поместить сценарии этих интеграционных тестов в область тестирования проекта и выполнить их в порядке с обычными сценариями?

Например:

основной журнал изменений:

<include file="version-1.xml"/>
<include file="version-2.xml"/>

и версия1 пример:

<changeSet id="1ver_1" author="xxx">
     <!-- creation of table foo_table -->
</changeSet>

<changeSet id="1ver_2" author="xxx">
     <!-- adding column to table foo_table -->
</changeSet>

образец версии 2:

<changeSet id="2ver_1" author="xxx">
     <!-- renaming table foo_table to bar_table -->
</changeSet>

Мне нужно, чтобы, если сценарии интеграционных тестов были написаны после сценария 1ver_1 и содержали вставки, все будет в порядке, если следующий будетбудут выполнены 1ver_2 и 2ver_1.

Таким образом, при запуске дБ для тестов интеграции будут выполняться сценарии в правильном порядке:

  1. 1ver_1
  2. test_data для 1ver_1
  3. 1ver_2
  4. 2ver_1

Какая лучшая практика для этого?

1 Ответ

0 голосов
/ 12 октября 2019

Я думаю, вам следует изменить способ хранения ваших наборов изменений. Взгляните на Liquibase Best Practices . Таким образом, ваш основной журнал изменений должен выглядеть следующим образом:

<include file="version-1.1.xml"/>
<include file="version-1.2.xml"/>
<include file="version-2.1xml"/>

Если вы сделаете это, у вас может быть выделенный основной файл журнала изменений для интеграционного теста. Файл changelog-master.xml вашего интеграционного теста будет выглядеть следующим образом:

<include file="version-1.1.xml"/>
<include file="test_data_version-1.1.xml"/>
<include file="version-1.2.xml"/>
<include file="version-2.1xml"/>

После этого вы просто переопределяете свойство в интеграционных тестах:

liquibase.change-log=classpath:integration-liquibase-changeLog.xml

Также вы должны поместить integration-liquibase-changeLog.xml и все'test_data_xx.xml' в ресурс тестового модуля интеграции или тестовый ресурс (это зависит от структуры проекта). Основная идея не должна предоставляться производственным артефактам.

...