Используете ли вы несколько тестовых сьютов или только Cucumber
Что проверяют
Понимаете ли вы, что Cucumber это инструмент для приёмочных сценариев на языке бизнеса, а не замена всем остальным тестам. Следом обычно спрашивают, как у вас разделены уровни тестов и как они запускаются в CI.
Как отвечать
Вопрос про ваш опыт, поэтому опирайтесь на свой проект. Каркас сильного ответа: несколько наборов, каждый под свой уровень пирамиды.
- юнит-тесты: JUnit 5, Mockito для зависимостей, AssertJ для читаемых проверок. Их больше всего, они быстрые и гоняются на каждый коммит;
- интеграционные:
@SpringBootTestили срезы вроде@DataJpaTest, база и брокер в Testcontainers, API через REST Assured илиMockMvc; - приёмочные на Cucumber: сценарии на Gherkin, согласованные с аналитиком или продактом. Их немного, они описывают ключевые пользовательские потоки;
- UI: если нужен, Selenide или Playwright for Java, часто под теми же сценариями.
Техническая часть. Современный Cucumber-JVM запускается движком JUnit Platform: класс с @Suite и @IncludeEngines("cucumber"), а раннер @RunWith(Cucumber.class) остался в проектах на JUnit 4. Spring подключает модуль cucumber-spring. Наборы собираются тегами: @smoke и @regression в feature-файлах, @Tag в JUnit. В Maven быстрые тесты гоняет Surefire, а медленные интеграционные с суффиксом IT запускает Failsafe на фазе verify.
Назовите свои цифры: сколько сценариев, сколько идёт прогон, что запускается на пулл-реквест, а что по ночам. Если в команде был только Cucumber, скажите честно и объясните, что вынесли бы на уровень юнитов и почему.
Где спотыкаются
Проверяют в Cucumber то, что должен покрывать юнит-тест: валидацию полей, ветки одного метода. Сценарии множатся, прогон растёт до часа, отчёт никто не читает.
Пишут Gherkin, понятный только разработчикам: с селекторами, SQL и техническими шагами. Тогда смысл BDD пропадает, остаётся лишний слой над обычным тестом.
Хранят состояние между шагами в статических полях. Сценарии начинают зависеть от порядка запуска и падают при параллельном прогоне. Для общего состояния есть внедрение зависимостей в step-классы через cucumber-spring или PicoContainer.