Выбор ответа Middle Тестирование в Spring обновлено

@DataJpaTest и транзакции

Вопрос

Что происходит с данными, записанными в тесте с @DataJpaTest?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Каждый тест в транзакции с откатом в конце. @DataJpaTest помечен @Transactional, поэтому каждый тест откатывается и не влияет на остальные.

Варианты ответа

  1. Данные сохраняются между тестами класса
  2. Каждый тест в транзакции с откатом в концеправильный ответ
  3. Удаляются через TRUNCATE после каждого класса
  4. Запись в базу в этом слайсе запрещена

Разбор

@DataJpaTest помечен @Transactional, поэтому каждый тест откатывается и не влияет на остальные. Побочный эффект: без явного flush() некоторые ограничения базы (unique, not null на уровне БД) могут не проявиться, ведь SQL не отправлен. TRUNCATE Spring сам не делает.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.