Мені важко змусити свій тест JUnit працювати. Ось фрагменти коду. Перший - це мій суперклас:
Тоді є два нащадки:
Ось сценарій створення бази даних (виняток) у PostgreSQL:
І нарешті тестовий приклад (його частина):
Стережись, зараз крик: запис
питання тому що? 190216.877 D main/JpaMealRepositoryImpl - m = нуль
Якщо я запустив цей запит у Postgres, замінивши? з meal_id (що дорівнює 4, як видно із запису), тоді я отримую рядок. Всього один ряд, як я хотів. Чому em.find (.) Повертає нуль ?
ОНОВЛЕННЯ
Я заповнюю БД сценарієм refill.sql під час запуску кожного тестового класу:
Ось qwery, який я публікую в psql:
Результат є
2 відповіді
Я вирішив проблему таким чином.
Як я писав, оригінальним суперкласом був
Рішення в стратегії з @GeneratedValue (стратегія = GenerationType.IDENTITY). Ось оновлений IdentifiedEntity:
(@ Доступ (FIELD) необов’язковий)
На мій погляд, у Hibernate є ПОМИЛКА, яка відтворює if @GeneratedValue (стратегія = GenerationType.IDENTITY) .
Перш за все, тест повинен працювати в ізольованому середовищі, не очищаючи базу даних при кожному запуску.
Якщо ви хочете, щоб тести видалили вашу поточну схему PostgreSQL, вам слід просто використовувати властивість конфігурації Hibernate hibernate.hbm2ddl.auto.
Якщо ви не хочете, щоб Hibernate змінював схему, не слід встановлювати властивість hibernate.hbm2ddl.auto.
Однак, чи збираєтеся ви відступати у кожній гонці? Як ти збираєшся працювати в таких умовах?
Краще почати з чистої схеми, заповнити її даними, зробити тест і видалити її в кінці, тому що ви не хочете залишати дані, які можуть заважати іншим тестам.
- Москва реагує, оскільки Росія вже додає випадків і майже смертей - Фаро де Віго
- Остаточний замінник вершкового масла надходить із тією ж сметаною, але це 80% води (і мало
- Машина для розгинання ніг Обчислення спалених калорій та закритих ват - відповіді тут
- Що означає ваша дружина має зайву вагу, поки ви голлівудський ханк - Марі Клер
- Терапія для схуднення психолога в Інтернеті Інтернет-психологічна консультація