Как правильно установить версии библиотек JUnit и плагина Maven Surefire?

Добрый вечер! У меня есть вопрос по поводу сервиса, который взаимодействует с другим сервисом для получения списка клиентов (или информации о конкретном клиенте) — всё в этом процессе работает корректно. Я протестировал код, включая логику сервиса, маппер и фейн-клиент, с помощью юнит-тестов, но при запуске тестов возникла проблема: <br/> <pre><code class="java">[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.5.2:test (default-test) on project pp: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:3.5.2:test failed: java.lang.NoSuchMethodError: 'void org.junit.platform.commons.util.CollectionUtils.forEachInReverseOrder(java.util.List, java.util.function.Consumer)' -&gt; [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException</code></pre> <br/> После выполнения команды с флагами -e и -X, я обнаружил, что метод forEachInReverseOrder из класса org.junit.platform.commons.util.CollectionUtils не найден. Это происходит из-за несовпадения версии JUnit Platform в моем проекте с версией, ожидаемой плагином maven-surefire-plugin. <br/> Вот мой pom: <br/> <pre><code class="java">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;
    &lt;modelVersio
  • 13 марта 2025 г. 17:44
Ответы на вопрос 1
Добрый вечер! Ошибка, с которой вы столкнулись, связана с несовместимостью между версиями JUnit и плагином Maven Surefire. Чтобы это исправить, вам нужно убедиться, что вы используете совместимые версии как JUnit, так и плагина Surefire.

Для этого я рекомендую следующее:

1. **Убедитесь, что используете актуальные версии JUnit и Maven Surefire Plugin.** Ниже приведены совместимые версии:

   - **JUnit 5** (платформа JUnit): используйте версию 5.7.x или выше.
   - **Maven Surefire Plugin**: используйте версию 3.0.0 или выше.

Вот пример конфигурации вашего файла `pom.xml`:

```xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>your-artifact-id</artifactId>
    <version>1.0-SNAPSHOT</version>
    
    <properties>
        <junit.version>5.9.3</junit.version> <!-- используйте актуальную версию JUnit -->
        <surefire.version>3.0.0-M5</surefire.version> <!-- используйте актуальную версию Maven Surefire -->
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- другие зависимости -->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${surefire.version}</version>
            </plugin>
        </plugins>
    </build>
</project>
```

2. **Тестирование совместимости:** После обновления версий, выполните команду:

   ```bash
   mvn clean test
   ```

   Убедитесь, что тесты проходят успешно без ошибок, связанных с JUnit.

3. **Проверка зависимостей:** Если проблемы сохраняются, выполните команду:

   ```bash
   mvn dependency:tree
   ```

   Это поможет вам увидеть, какие версии JUnit и других библиотек фактически используются в вашем проекте, что может помочь в устранении конфликта версий.

Если проблема все еще сохраняется, пожалуйста, дайте знать, и я помогу вам дальше!
Похожие вопросы