Как указать, что зависимость используется только на этапе тестирования?
В Maven для этого используется scope со значением test. Такая зависимость доступна только при компиляции и запуске тестов. В итоговый артефакт она не попадает. Это стандартный и рекомендуемый способ подключения тестовых библиотек. Чаще всего так подключают JUnit и Mockito.
В Java-проектах тестовые библиотеки не должны попадать в production-окружение, и Maven предоставляет для этого простой и явный механизм.
Зависимость с scope=test — это библиотека, которая используется только на этапе компиляции и выполнения тестов и полностью исключается из runtime-артефакта.
pom.xmlПеред примером важно понимать: test — это отдельная область видимости, а не просто «пометка».
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
scope=testДоступна при компиляции тестов
Доступна при запуске тестов
Недоступна в production-коде
Меньше зависимостей
Меньше рисков конфликтов
Предсказуемое окружение
Production-код не зависит от тестовых библиотек
Ошибки видны уже на этапе компиляции
scope=testJUnit
TestNG
Mockito
AssertJ
Spring Boot Test
Подключение тестовой библиотеки с compile
Использование тестовых классов в production-коде
Отсутствие scope у тестовых зависимостей
Чтобы указать, что зависимость используется только для тестирования, в Maven нужно явно задать scope=test. Это простой, стандартный и обязательный приём для корректной структуры Java-проекта.