Инициализируйте совместимые JDBC в базе данных памяти с триггерами для тестирования интеграции?

StackOverflow https://stackoverflow.com//questions/25086115

Вопрос

В настоящее время у нас есть один экземпляр базы данных для всех наших тестирования интеграции. Схема базы данных Oracle синхронизируется с помощью группы DDL. Затем мы используем DBUNIT для заполнения и сокращения таблиц между тестами. Есть два вопроса с этим подходом:

  1. время, проведенное для подготовки базы данных, больше, чем то, что потрачено на тестирование
  2. По случаю, как правило, тестовый отказ, тестовые данные кровотеты к последующему тесту и вызывают больше сбоев.
  3. Я хочу изолировать тесты, создав базу данных в памяти (например, h2) на тест. Я планирую настроить ECLIPSELINK для создания DDL (потому что преобразование DDL Oracle на что-то еще будет представлять собой кошмар, который я представляю). Единственная проблема в этот момент будет создавать триггеры.

    Так что у меня есть два вопроса ...

    1. Могу ли я создать базу данных в памяти (h2 или что-то еще что) от существующей схемы Oracle, включены триггеры?
    2. или, могу ли я создать в базе данных памяти, используя мой EntityManager (Generate DDL) и создать кучу триггеров на лету, но до тестирования выполнения?
    3. Стек технологии:

        .
      • Весна: 3.2.8
      • Весенние данные JPA: 1.5.3
      • Eclipse Ссылка: 2.5.1
      • Oracle: 11

      Я знаком с тем, как создать экземпляр среды интеграции в весенней тесте для загрузки базы данных в памяти. Просто не уверен, как я могу перевести вещи Oracle (в частности, триггеры).

Это было полезно?

Решение

Могу ли я создать базу данных в памяти (H2 или что-то еще, что) из существующей схемы Oracle, включены триггеры?

Да, вы можете иметь это. Мы используем Postgres для всех наших физических баз данных и HSQL для базы данных в памяти. Мы начали с использованием Hibernate для создания базы данных выключения классов объектов, но теперь перемирились на использование Flyway. Имейте в виду, что некоторые из ваших DML и DDL будут пользовательскими на Oracle, поэтому вам придется настроить для HSQL или H2 (довольно легко сделать, используя пролею).

Или, могу ли я создать в базе данных памяти, используя мой EntityManager (Generate DDL) и создать кучу триггеров на лету, но до тестирования выполнения?

Вы можете очистить / заполнить вашу базу данных в памяти, однако вы хотите. Есть несколько способов:

  1. Расширения испытаний пролета - это легко и что мы используем. https://github.com/flyway/flyway-test-extensions .
  2. Написать весенний боб, который имеет тестовый профиль @profile («Test») и будет вставлять данные для тестовой среды.
  3. Используйте Script Import.sql. Я считаю, что жгут весеннего теста будет искать это.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top