将 springparent pom 升级到 3.3.3(从 spring-boot-starter-parent 3.2.5)并在 3.3.3 版本上具有所需的测试和 webflux 依赖项后,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 修复了该问题。可能是什么问题以及如何排除故障?
不明白为什么甚至尝试创建 TestRestTemplate bean...
测试类如下所示:
@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
,是否有中间pom指定了某些版本的工件; NoOpResponseErrorHandler
类已在 6.1.7 中引入,也许最新的 webflux 版本预计将提供它。
无论如何,请注意不要强制使用“spring生态系统”库版本,即使现在测试运行,依赖关系中存在如此大的差异也不是一个好习惯。您应该分析该项目并尝试采用“spring-boot-parent 管理”方法。