从`@WebFluxTest`迁移到`@SpringBootTest`后,连接在集成测试中被拒绝

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

我从 MVC 迁移到 Spring Boot Reactive,迁移了控制器,现在正在尝试迁移集成测试。

控制器测试的注释如下;如果我运行测试,它会起作用。

@RunWith(SpringRunner.class)
@WebFluxTest
public class MyIntegrationTest {
}

然后我像这样替换

WebFluxTest
注释:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureWebTestClient
public class MyIntegrationTest {
}

如果我运行此测试,则会出现错误:

reactor.core.Exceptions$ReactiveException: io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: Connection refused: localhost/127.0.0.1:8080

关于如何修复它有什么想法吗?

java spring-boot spring-mvc spring-webflux webtestclient
1个回答
5
投票
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

将在随机端口上加载并启动完整的应用程序。

@AutoConfigureWebTestClient

将加载您的应用程序的模拟,然后配置 WebTestClient 来访问该模拟。

您正在告诉 Spring 启动应用程序并加载模拟。

所有这些在文档中都得到了很好的解释,因此请阅读那里,然后决定是否要加载整个应用程序,或者只是在执行测试时对其进行模拟。

测试 Spring boot 应用程序

使用正在运行的服务器进行测试

使用模拟环境进行测试

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