Ответ
В 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, где выполняются автоматизированные модульные тесты.