Какие тестовые фреймворки ты использовал
Что проверяют
Не список названий, а то, как у вас устроено тестирование: где юнит-тесты, где интеграционные, чем изолируете зависимости и как это работает в CI. Следом обычно спрашивают, как вы тестируете слой работы с базой и почему именно так.
Как отвечать
Стройте ответ по уровням тестов и для каждого называйте то, с чем реально работали:
- JUnit Jupiter: основа, JUnit 5 или его наследник JUnit 6. Стоит упомянуть
@ParameterizedTest,@Nested,@DisplayNameи расширения через@ExtendWith; - AssertJ: читаемые проверки вида
assertThat(list).hasSize(3).contains(x), в Spring Boot приезжает вместе со стартером для тестов; - Mockito: моки зависимостей через
@MockиMockitoExtension, проверка вызовов черезverify. В Spring Boot@MockBeanс версии 3.4 объявлен устаревшим, на его место пришёл@MockitoBean; - Spring Boot Test: срезы контекста
@WebMvcTest,@DataJpaTestи полный@SpringBootTest, запросы к контроллерам черезMockMvc; - Testcontainers: настоящий PostgreSQL или Kafka в Docker на время теста вместо H2, которая ведёт себя иначе на диалектных запросах;
- WireMock: заглушки внешних HTTP-сервисов;
- TestNG: если встречался, скажите где. В новых проектах он редкость, чаще живёт в старых наборах автотестов.
К каждому пункту добавьте свой пример: что тестировали, сколько примерно тестов, сколько идёт прогон в CI, какое покрытие показывал JaCoCo. Цифры должны быть вашими, придуманные проценты быстро рассыпаются на уточняющих вопросах.
Если с чем-то не работали, так и скажите: «Testcontainers не использовали, интеграцию гоняли на общем стенде, но знаю, чем контейнеры лучше». Это звучит сильнее, чем пересказ документации.
Где спотыкаются
Перечисляют Selenium и Cucumber на собеседовании бэкенд-разработчика. Лучше сосредоточиться на своём уровне и рассказать о нём подробно.
Мокают всё подряд, включая репозитории, и считают это интеграционным тестом. Запрос к базе при этом не проверяется ни разу.
Путают роли: называют Mockito фреймворком для запуска тестов или не знают, чем @SpringBootTest дорог по времени старта контекста.