Я использую HSQLDB для модуля JUnit, тестируя набор классов hibernate. В вызове каждого теста setUp()
я инициализирую базу данных hsql в памяти (через спящий режим) с использованием имени тестового класса и тестового примера для создания строки подключения для экземпляра db в памяти. Но в моем втором тесте идентификационная последовательность, похоже, продолжается от первого теста. Я хочу, чтобы мои тесты были абсолютно независимыми, так что это меня удивляет. Я использую @GeneratedValue(strategy = GenerationType.AUTO)
для своих идентификаторов. Моя целевая база разработки и производства - это mysql или postgresql, но это не имеет значения.HSQLDB, независимый для модульных испытаний
Обновление Я пробовал меньший тестовый чехол, и оказывается, что я был неправ. Я создал больше объектов в тесте secodn, в результате чего появился другой идентификатор. Мой плохой целиком!
Это неожиданное поведение. Можете ли вы опубликовать код из 'setUp()', который вы используете для инициализации соединения с базой данных? – Perception
Я попробовал меньший тестовый пример, и оказалось, что я ошибся. Я создал больше объектов в тесте secodn, в результате чего появился другой идентификатор. Мой плохой целиком! –
Собственно, ваш второй тест не должен зависеть от фактического значения сгенерированного идентификатора. Тест не должен делать каких-либо неявных предположений о его среде. – yegor256