Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: maven, scope

Как указать, что зависимость используется только на этапе тестирования?

Как указать, что зависимость используется только на этапе тестирования?

Короткий ответ

В 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

1) Ограничение этапов использования

  1. Доступна при компиляции тестов

  2. Доступна при запуске тестов

  3. Недоступна в production-коде

2) Чистота production-артефакта

  1. Меньше зависимостей

  2. Меньше рисков конфликтов

  3. Предсказуемое окружение

3) Явное разделение ответственности

  1. Production-код не зависит от тестовых библиотек

  2. Ошибки видны уже на этапе компиляции

Типичные библиотеки со scope=test

  1. JUnit

  2. TestNG

  3. Mockito

  4. AssertJ

  5. Spring Boot Test

Частые ошибки

  1. Подключение тестовой библиотеки с compile

  2. Использование тестовых классов в production-коде

  3. Отсутствие scope у тестовых зависимостей

Краткий вывод

Чтобы указать, что зависимость используется только для тестирования, в Maven нужно явно задать scope=test. Это простой, стандартный и обязательный приём для корректной структуры Java-проекта.

Уровень

  • Рейтинг:

    5

  • Сложность:

    3

Навыки

  • Java

    Java

Ключевые слова

#maven

#scope

Подпишись на Java Developer в телеграм