2012-01-12 2 views
1

У меня есть некоторые интеграционные тесты, которые создают DBQL-db из сущностей JPA. Все это отлично работает от идентификатора auto increment. Кажется, что они хранятся между тестами и не сбрасываются. Например, если я добавлю два элемента в тест 1, тогда значение id в HSQL для этих двух строк равно 1 и 2. В моей настройке я затем уничтожу db. В тесте 2 я добавляю один элемент, а id - 3 и не возвращается к 1. Я использую Spring в качестве оператора транзакций и подключаю все мои зависимости. Кто-нибудь знает, что может быть причиной этого?Автоинкремент с HSQL, спящий режим и весна и тесты

Я не хочу проверять идентификаторы как таковые, но я нахожу это раздражающим.

Заранее спасибо

ответ

1

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

Просто не полагайтесь на абсолютные значения для идентификаторов в ваших тестах. Получите идентификационные значения из объектов, созданных при настройке тестового примера.

0

Пробег: Unitils. Эти инструменты автоматически удаляют таблицы БД и автоматически создают их для каждого теста. Конечно, у вас есть другие варианты, которые вы можете выбрать. Они были взяты из here,

  • CleanInsertLoadStrategy: Вставьте набор данных, после удаления всех данных, в настоящее время присутствует в таблицах, указанных в наборе данных
  • InsertLoadStrategy: Просто вставьте набор данных в базу данных
  • RefreshLoadStrategy: «Обновить» содержимое базы данных с содержимым набора данных. Это означает, что данные существующих строк обновляются и вставлены несуществующие строки. Любые строки, находящиеся в базе данных, но не в наборе данных, остаются без изменений.
  • UpdateLoadStrategy: Обновите содержимое базы данных содержимым набора данных. Это означает, что данные существующих строк обновляются. Ошибка, если набор данных содержит записи, которые не находятся в базе данных (то есть записи, имеющие одинаковое значение для столбца первичного ключа).

Возможно, вы найдете этот инструмент полезным.

Смежные вопросы