TDD с HSQLDB — удаляющий внешние ключи

Я использую HSQLDB для интеграционного тестирования слоя данных, которое является большим. Однако я нахожу, что мои ограничения внешнего ключа мешают моим тестам. Например, для тестирования простого выбора на одной таблице я должен вставить фиктивные данные в пять дополнительных таблиц. Это заставляет меня хотеть бросить вещи.

Я имею аннотации JPA всюду по нашему типовому кодексу и настроил, в спящем режиме для воссоздания схемы (hbm2ddl.create-отбрасывание) в конфигурации. Соединения интерпретируются правильно как ограничения внешнего ключа, когда таблицы сгенерированы.

То, что я хотел бы, к также:

  1. Не создают внешние ключи первоначально (идеальный, самый чистый), или
  2. Найдите способ программно отбросить все внешние ключи в базе данных (своего рода hacky, но сделают задание),

Если это полезно, я использую Spring для автосоединения этих тестов проводом. Рассматриваемые тесты наследовались AbstractTransactionalJUnit4SpringContextTests.

Что Вы думаете? Это может быть сделано?

9
задан roufamatic 21 April 2010 в 21:34
поделиться

2 ответа

Вы можете деактивировать ограничения FK с помощью следующей инструкции:

SET REFERENTIAL_INTEGRITY FALSE;

Вы можете выполнить это с помощью JDBC утверждения до ваших методов тестирования ( и установите его обратно на ИСТИНА после).

9
ответ дан 4 December 2019 в 11:04
поделиться

Я бы подумал о том, чтобы потратить некоторое время на создание пары фикстур, возможно с DBUnit, который вы вставляете @Before.

Кстати, AbstractTransactionalJUnit4Test устарел в Spring 3.0

0
ответ дан 4 December 2019 в 11:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: