С каким scope подключают JUnit в Maven?

«С каким scope подключают JUnit в Maven?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

JUnit в Maven подключается с областью видимости test. Это стандартная практика, так как библиотека для тестирования требуется только на этапе компиляции и выполнения тестов, но не должна включаться в runtime-зависимости основного кода или финальный артефакт (JAR/WAR).

Пример зависимости в pom.xml для JUnit 5:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.9.2</version>
    <scope>test</scope>
</dependency>

Почему test scope?

  • Изоляция зависимостей: Гарантирует, что тестовые библиотеки не попадут в production-сборку.
  • Чистота classpath: Во время компиляции основного кода JUnit недоступен, что предотвращает случайное использование тестовых аннотаций в бизнес-логике.
  • Уменьшение размера артефакта: Исключает ненужные библиотеки из итогового пакета.

Для JUnit 4 (junit:junit) применяется тот же принцип.