2013-05-21 3 views
1

Я использовал стратегию генерации по умолчанию в своем приложении (с postgres), и у меня есть уникальная таблица последовательности в моем db для всех моих других таблиц, поэтому идентификатор должен быть уникальный в моем табличном пространстве.Что такое стратегия генерации идентификаторов, используемая в модульном модуле Grails

Однако у меня нет такого же поведения в моих модульных тестах, потому что у меня одинаковый идентификатор в разных таблицах, я полагаю, что Grails использует другую стратегию в тесте? (Последовательность в таблицу?)

благодаря

+1

Грайль использует тестовую среду во время тестирования, ссылается на DataSource.groovy. По умолчанию БД находится в памяти h2, если в противном случае вы не изменили его на другое. Последовательность в Postgres здесь не применяется в h2. – dmahapatro

+0

Дополнение: если Postgres всегда будет вашей базой данных prod, я предлагаю вам использовать другую базу Postgres для интеграционных тестов, это позволит вам выявить возможные проблемы до того, как начнется производство. –

ответ

0

По умолчанию Грааль откатов DB транзакций в тестах блока/интеграции. Это может объяснить нечетное поведение.

Вы можете попытаться сделать модульные тесты не транзакционными, явно указав это в классе Test.

static transactional = false 
Смежные вопросы