Выбор ответа Middle Тестирование в Spring обновлено
@DataJpaTest и транзакции
Вопрос
Что происходит с данными, записанными в тесте с @DataJpaTest?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Каждый тест в транзакции с откатом в конце. @DataJpaTest помечен @Transactional, поэтому каждый тест откатывается и не влияет на остальные.
Варианты ответа
- Данные сохраняются между тестами класса
- Каждый тест в транзакции с откатом в концеправильный ответ
- Удаляются через TRUNCATE после каждого класса
- Запись в базу в этом слайсе запрещена
Разбор
@DataJpaTest помечен @Transactional, поэтому каждый тест откатывается и не влияет на остальные. Побочный эффект: без явного flush() некоторые ограничения базы (unique, not null на уровне БД) могут не проявиться, ведь SQL не отправлен. TRUNCATE Spring сам не делает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.