@SpringBootTest Тесты с WebTestClient не работают после перехода с Spring-boot-starter-parent версии 3.2.5 на 3.3.3

после обновления родительского pom Spring до 3.3.3 (с Spring-boot-starter-parent 3.2.5) и наличия необходимых зависимостей test и webflux в версии 3.3.3 Spring продолжает выдавать ошибку: «org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.test.web.client.TestRestTemplate': org/springframework/web/client/NoOpResponseErrorHandler»

Caused by: java.lang.NoClassDefFoundError: org/springframework/web/client/NoOpResponseErrorHandler

при запуске модульных тестов с помощью WebTestClient переключение обратно на предыдущий родительский pom устранило проблему. В чем может быть проблема и как ее устранить?

Не понимаю, почему вообще предпринимается попытка создать bean-компонент TestRestTemplate...

Тестовый класс выглядит следующим образом:

@SpringBootTest(webEnvironment = RANDOM_PORT, classes = MyServiceApplication.class)
public class MyClientTest {

    @Autowired
    private WebTestClient webTestClient;

    @Test
     ....
}

С зависимостью в pom:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>

Spring тест находится в версии 6.1.6 и исходит из родительского pom.

Пробовал установить версию зависимости вручную, не помогло. Пытался изменить webEnvoronment на MOCK, но по-другому не получается, и я не думаю, что это правильное решение для начала.

Привет, что вы имеете в виду под «Spring test находится в версии 6.1.6 и исходит из родительского pom»? Есть ли промежуточный пом, указывающий некоторые версии артефактов? Если это так, проверьте, какую версию Spring-Web вы используете; Класс NoOpResponseErrorHandler был представлен в версии 6.1.7, и, возможно, в последних выпусках webflux он будет доступен.

Francesco Poli 26.08.2024 15:42

Да, это помогло, добавил Spring-Web 6.1.12

Egils L 26.08.2024 15:57

Будьте осторожны, не форсируйте версии библиотеки «весенней экосистемы», даже если теперь тесты запускаются, иметь такую ​​большую разницу в зависимостях не рекомендуется. Вам следует проанализировать проект и попытаться использовать подход «управляемый Spring-Boot-родителем».

Francesco Poli 26.08.2024 16:04

На данный момент недостаточно репутации для этого, но я вернусь :)

Egils L 26.08.2024 16:13

Я обобщу свои комментарии в ответе

Francesco Poli 26.08.2024 19:23
0
5
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пожалуйста, проверьте, какую версию spring-web вы используете, если существует промежуточный pom, указывающий некоторые версии артефактов; класс NoOpResponseErrorHandler был представлен в версии 6.1.7, и, возможно, в последних выпусках webflux он будет доступен.

В любом случае, будьте осторожны, чтобы не принудительно использовать версии библиотеки «весенней экосистемы», даже если теперь тесты запускаются, иметь такую ​​большую разницу в зависимостях не рекомендуется. Вам следует проанализировать проект и попытаться использовать подход «управляемый Spring-Boot-родителем».

Другие вопросы по теме