Выбор ответа Senior Тестирование: JUnit 5 и Mockito обновлено
Медленные интеграционные тесты
Вопрос
Интеграционные тесты с Testcontainers идут 15 минут, потому что каждый тестовый класс поднимает свой PostgreSQL. Что сделать в первую очередь?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Один static-контейнер на весь прогон и очистка данных между тестами. Старт контейнера стоит секунды, умноженные на число классов.
Варианты ответа
- Перейти на встроенную H2, чтобы вообще не поднимать контейнеры
- Один static-контейнер на весь прогон и очистка данных между тестамиправильный ответ
- Запускать интеграционные тесты реже, например раз в неделю на CI
- Добавить
Thread.sleepпосле старта, чтобы контейнер успел прогреться
Разбор
Старт контейнера стоит секунды, умноженные на число классов. Общий static-контейнер, который поднимается один раз на JVM, плюс очистка или откат данных между тестами резко сокращают время. В Spring ещё помогает переиспользование контекста. H2 ускорит, но проверяет не ту СУБД. Редкий запуск ухудшает обратную связь. sleep ничего не ускоряет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.