после обновления родительского 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-Web 6.1.12
Будьте осторожны, не форсируйте версии библиотеки «весенней экосистемы», даже если теперь тесты запускаются, иметь такую большую разницу в зависимостях не рекомендуется. Вам следует проанализировать проект и попытаться использовать подход «управляемый Spring-Boot-родителем».
На данный момент недостаточно репутации для этого, но я вернусь :)
Я обобщу свои комментарии в ответе
Пожалуйста, проверьте, какую версию spring-web
вы используете, если существует промежуточный pom, указывающий некоторые версии артефактов; класс NoOpResponseErrorHandler
был представлен в версии 6.1.7, и, возможно, в последних выпусках webflux он будет доступен.
В любом случае, будьте осторожны, чтобы не принудительно использовать версии библиотеки «весенней экосистемы», даже если теперь тесты запускаются, иметь такую большую разницу в зависимостях не рекомендуется. Вам следует проанализировать проект и попытаться использовать подход «управляемый Spring-Boot-родителем».
Привет, что вы имеете в виду под «Spring test находится в версии 6.1.6 и исходит из родительского pom»? Есть ли промежуточный пом, указывающий некоторые версии артефактов? Если это так, проверьте, какую версию Spring-Web вы используете; Класс NoOpResponseErrorHandler был представлен в версии 6.1.7, и, возможно, в последних выпусках webflux он будет доступен.