Инициализируйте совместимые JDBC в базе данных памяти с триггерами для тестирования интеграции?
-
02-01-2020 - |
Вопрос
- время, проведенное для подготовки базы данных, больше, чем то, что потрачено на тестирование
- По случаю, как правило, тестовый отказ, тестовые данные кровотеты к последующему тесту и вызывают больше сбоев.
- Могу ли я создать базу данных в памяти (h2 или что-то еще что) от существующей схемы Oracle, включены триггеры?
- или, могу ли я создать в базе данных памяти, используя мой EntityManager (Generate DDL) и создать кучу триггеров на лету, но до тестирования выполнения?
- Весна: 3.2.8
- Весенние данные JPA: 1.5.3
- Eclipse Ссылка: 2.5.1
- Oracle: 11
Я хочу изолировать тесты, создав базу данных в памяти (например, h2) на тест. Я планирую настроить ECLIPSELINK для создания DDL (потому что преобразование DDL Oracle на что-то еще будет представлять собой кошмар, который я представляю). Единственная проблема в этот момент будет создавать триггеры.
Так что у меня есть два вопроса ...
Стек технологии:
- .
Я знаком с тем, как создать экземпляр среды интеграции в весенней тесте для загрузки базы данных в памяти. Просто не уверен, как я могу перевести вещи Oracle (в частности, триггеры).
Решение
Могу ли я создать базу данных в памяти (H2 или что-то еще, что) из существующей схемы Oracle, включены триггеры?
Да, вы можете иметь это. Мы используем Postgres для всех наших физических баз данных и HSQL для базы данных в памяти. Мы начали с использованием Hibernate для создания базы данных выключения классов объектов, но теперь перемирились на использование Flyway. Имейте в виду, что некоторые из ваших DML и DDL будут пользовательскими на Oracle, поэтому вам придется настроить для HSQL или H2 (довольно легко сделать, используя пролею).
Или, могу ли я создать в базе данных памяти, используя мой EntityManager (Generate DDL) и создать кучу триггеров на лету, но до тестирования выполнения?
Вы можете очистить / заполнить вашу базу данных в памяти, однако вы хотите. Есть несколько способов:
- Расширения испытаний пролета - это легко и что мы используем. https://github.com/flyway/flyway-test-extensions .
- Написать весенний боб, который имеет тестовый профиль @profile («Test») и будет вставлять данные для тестовой среды.
- Используйте Script Import.sql. Я считаю, что жгут весеннего теста будет искать это.