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

Настройка плагина 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