如何在webEnvironment=DEFINED_PORT时固定Spring Boot测试端口?
解决Spring Boot集成测试固定端口问题
你设置了DEFINED_PORT但仍出现随机端口,核心原因是**DEFINED_PORT会使用应用配置中指定的端口,若未配置则会 fallback 到随机逻辑**。以下是具体解决方案:
1. 在测试配置中指定固定端口
在src/test/resources目录下创建或修改测试专用配置文件(比如application-test.properties),添加固定端口配置:
server.port=63547
如果你的测试没有使用特定Profile,直接修改src/test/resources/application.properties即可。
2. 正确注入配置的端口(避免硬编码)
不要手动给randomServerPort赋值,改用@Value注入配置中的端口,确保代码和配置一致:
@Value("${server.port}") private int serverPort; @Test public void autoSpecUpdate() throws IOException { String url = "http://localhost:" + serverPort + "/" + version + "/api-docs"; // 后续测试逻辑 }
3. 排查潜在的端口覆盖因素
- 检查测试类中是否存在
@DynamicPropertySource注解,这类配置可能动态修改了端口值 - 确认没有其他配置类或测试扩展逻辑覆盖了
server.port的配置
内容的提问来源于stack exchange,提问作者Dhanyaa Bharadwaj
相关产品推荐
相关产品推荐

