Ответ
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) применяется тот же принцип.