Как настроить Surefire для распознавания JUnit 5 тестов

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для того чтобы плагин Surefire стал опознавать тесты JUnit 5, необходимо обновить pom.xml в вашем Maven-проекте, включив в него зависимости JUnit Jupiter и настроить плагин Surefire для работы с JUnit 5:

xml
Скопировать код
<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.

Кинга Идем в IT: пошаговый план для смены профессии

Выявление и устранение проблем интеграции

Даже при корректных настройках могут возникнуть непредвиденные проблемы. Если Surefire все еще не выявляет тесты JUnit 5, ниже расмотрим, как обнаружить и исправить возможные трудности:

  1. Совместимость версий: Убедитесь, что версии Maven, JUnit и Surefire совместимы между собой.

  2. Проверьте, что версия Java соответствует требованиям JUnit 5 — Java 8 или более поздняя:

    xml
    Скопировать код
     <properties>
       <maven.compiler.source>1.8</maven.compiler.source>
       <maven.compiler.target>1.8</maven.compiler.target>
     </properties>
  3. Убедитесь, что названия тестов соответствуют установленным стандартам.

  4. Если тесты зависят от жизненного цикла экземпляра, настроенного в JUnit 5, используйте аннотацию @TestInstance.

  5. Для параметризованных тестов потребуется специальная зависимость junit-jupiter-params.

  6. Образцы Maven-проектов, представленные сообществом на GitHub, могут служить источником полезных решений.

  7. В некоторых случаях может помочь обновление версии плагина Surefire до версии с нативной поддержкой JUnit 5.

  8. 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 ограничивает использование этих зависимостей на этапе тестирования.

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Настройка плагина Maven Surefire

Плагин Maven Surefire обеспечивает корректное взаимодействие с тестами JUnit 5. Для этого необходима версия 2.22.0 или более новая, поддерживающая автоматическую интеграцию.

Визуализация

Мы находимся на станции Surefire:

Markdown
Скопировать код
Maven Surefire (🎼🧍‍♂️): "Добро пожаловать на борт, мы отправляемся вместе с тестами!"
Старый добрый Поезд JUnit 4 (🚂): Садится спокойно с 'прошлогодним' билетом.
Современный Экспресс JUnit 5 (🚄): Без специального билета нового формата отправление невозможно!

Наш проводник прекрасно ориентируется в новом и старом порядке вещей. Если вы обновились до последней версии Surefire:

xml
Скопировать код
<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 в зависимости от условий сборки.
  • Свойства гарантируют единообразие настроек для разных сред.

Анализ вашего репозитория

Иногда достаточно всего лишь проанализировать систему контроля версий, чтобы понять, почему тесты перестали распознаваться.

Полезные материалы

  1. Руководство пользователя JUnit 5
  2. Плагин Maven Surefire – использование JUnit 5
  3. ParameterResolutionException при использовании аргументов, отличных от строк
  4. Плагин Maven Surefire – описание
  5. Урок Baeldung по запуску тестов JUnit 5 с помощью Maven
  6. Решения для JUnit 5 и Surefire на Stack Overflow
  7. Обновите плагин Maven Surefire для поддержки JUnit 5
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какие зависимости необходимо добавить в pom.xml для поддержки JUnit 5?
1 / 5