Как настроить Surefire для распознавания JUnit 5 тестов
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для того чтобы плагин Surefire стал опознавать тесты JUnit 5, необходимо обновить pom.xml
в вашем Maven-проекте, включив в него зависимости JUnit Jupiter и настроить плагин Surefire для работы с JUnit 5:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version> <!-- Рекомендуется использовать последнюю версию -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.2</version> <!-- Всегда актуальная версия движка -->
<scope>test</scope>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version> <!-- Версия плагина, совместимая с JUnit 5 -->
</plugin>
Проверьте, что аннотация @Test
взята из пакета org.junit.jupiter.api
, а не из JUnit 4.
Выявление и устранение проблем интеграции
Даже при корректных настройках могут возникнуть непредвиденные проблемы. Если Surefire все еще не выявляет тесты JUnit 5, ниже расмотрим, как обнаружить и исправить возможные трудности:
Совместимость версий: Убедитесь, что версии Maven, JUnit и Surefire совместимы между собой.
Проверьте, что версия Java соответствует требованиям JUnit 5 — Java 8 или более поздняя:
<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
Убедитесь, что названия тестов соответствуют установленным стандартам.
Если тесты зависят от жизненного цикла экземпляра, настроенного в JUnit 5, используйте аннотацию
@TestInstance
.Для параметризованных тестов потребуется специальная зависимость
junit-jupiter-params
.Образцы Maven-проектов, представленные сообществом на GitHub, могут служить источником полезных решений.
В некоторых случаях может помочь обновление версии плагина Surefire до версии с нативной поддержкой JUnit 5.
junit-platform-surefire-provider
не испольуется начиная с JUnit 5.5.1, поэтому его следует исключить.
Основа настройки в pom.xml
Правильная конфигурация pom.xml
– залог успешного использования JUnit 5:
Зависимости JUnit Jupiter
Зависимости JUnit Jupiter – это фундамент нашего тестового окружения:
junit-jupiter-api
: представляет API для создания тестов, которым вы будете пользоваться.junit-jupiter-engine
: организует выполнение тестовой логики.
Scope test
ограничивает использование этих зависимостей на этапе тестирования.
Настройка плагина Maven Surefire
Плагин Maven Surefire обеспечивает корректное взаимодействие с тестами JUnit 5. Для этого необходима версия 2.22.0 или более новая, поддерживающая автоматическую интеграцию.
Визуализация
Мы находимся на станции Surefire:
Maven Surefire (🎼🧍♂️): "Добро пожаловать на борт, мы отправляемся вместе с тестами!"
Старый добрый Поезд JUnit 4 (🚂): Садится спокойно с 'прошлогодним' билетом.
Современный Экспресс JUnit 5 (🚄): Без специального билета нового формата отправление невозможно!
Наш проводник прекрасно ориентируется в новом и старом порядке вещей. Если вы обновились до последней версии Surefire:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>[укажите актуальную версию]</version> <!-- Используйте новейшую версию с Maven Central -->
<scope>test</scope>
</dependency>
Экспресс JUnit 5 будет готов отправиться в путь на вашем проекте при надежном руководстве Surefire. 🚄✅
Обновление тестового окружения
Новые версии, новые возможности
Следите за последними стабильными обновлениями на Maven Central:
- Всегда используйте последние стабильные версии JUnit Jupiter.
- Регулярно обновляйте плагин Maven Surefire для поддержания стабильности работы.
Работа с профилями и свойствами Maven
Профили Maven позволяют выставлять различные параметры конфигурации в зависимости от среды:
- Профили помогают включать библиотеки JUnit в зависимости от условий сборки.
- Свойства гарантируют единообразие настроек для разных сред.
Анализ вашего репозитория
Иногда достаточно всего лишь проанализировать систему контроля версий, чтобы понять, почему тесты перестали распознаваться.
Полезные материалы
- Руководство пользователя JUnit 5
- Плагин Maven Surefire – использование JUnit 5
- ParameterResolutionException при использовании аргументов, отличных от строк
- Плагин Maven Surefire – описание
- Урок Baeldung по запуску тестов JUnit 5 с помощью Maven
- Решения для JUnit 5 и Surefire на Stack Overflow
- Обновите плагин Maven Surefire для поддержки JUnit 5