На каком этапе начинается тестирование в Maven?

«На каком этапе начинается тестирование в Maven?» — вопрос из категории Системы сборки, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Maven тестирование выполняется на этапе test стандартного жизненного цикла сборки (default lifecycle). Этот этап следует за этапами compile (компиляция исходного кода) и process-test-classes (обработка тестовых классов) и предшествует этапу package (упаковка в JAR/WAR).

Практическое использование:

  • Запуск всех модульных и интеграционных тестов (настроенных через Maven Surefire Plugin):
    mvn test
  • Если тесты не проходят, сборка прерывается, и артефакт не создается. Это обеспечивает принцип "сборка не должна проходить при падении тестов".
  • Для условного пропуска тестов (например, только сборки) используется параметр:
    mvn clean package -DskipTests

    Важно: -DskipTests компилирует, но не выполняет тесты. -Dmaven.test.skip=true пропускает и компиляцию, и выполнение тестов.

Структура проекта и плагины:

  • Тесты располагаются в src/test/java.
  • За выполнение unit-тестов отвечает Maven Surefire Plugin. Его конфигурация в pom.xml позволяет, например, включать/исключать определенные тестовые классы, задавать параллельный запуск или настраивать отчеты.
  • Для запуска интеграционных тестов (которые выполняются после упаковки) используется Maven Failsafe Plugin. Эти тесты запускаются на этапе integration-test и верифицируются на этапе verify.

Таким образом, этап test в Maven — это ключевая точка контроля качества в процессе CI/CD, где выполняются автоматизированные модульные тесты.