@SpringBootTest 从 spring-boot-starter-parent 版本 3.2.5 迁移到 3.3.3 后,使用 WebTestClient 进行的测试被破坏了

问题描述 投票:0回答:1

将 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 spring-boot junit spring-webflux spring-test
1个回答
0
投票

请检查您使用的是哪个版本的

spring-web
,是否有中间pom指定了某些版本的工件;
NoOpResponseErrorHandler
类已在 6.1.7 中引入,也许最新的 webflux 版本预计将提供它。

无论如何,请注意不要强制使用“spring生态系统”库版本,即使现在测试运行,依赖关系中存在如此大的差异也不是一个好习惯。您应该分析该项目并尝试采用“spring-boot-parent 管理”方法。

© www.soinside.com 2019 - 2024. All rights reserved.