You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot+OAuth+JWT集成测试遇连接拒绝错误,改端口仍未解决求助

哎,这个连接拒绝的问题在Spring Boot集成测试里真的挺常见的,你已经想到改端口了,但可能还有这些容易忽略的点:

排查Spring Boot集成测试Connection Refused问题的关键细节
  • 确认测试是否正确启动了应用上下文
    别以为加了测试注解就万事大吉!如果你的测试类用了@SpringBootTest但指定了webEnvironment = SpringBootTest.WebEnvironment.NONE,那应用根本不会启动嵌入式服务器。建议改用webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT——它会自动分配一个未被占用的随机端口,比手动改端口更省心,还能避免本地端口冲突。

  • 确保请求的端口和实际启动的端口完全匹配
    不管是手动指定端口还是用随机端口,测试代码里的请求URL必须对应上。比如用随机端口的话,可以通过@LocalServerPort注解注入实际启动的端口:

    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    public class AuthIntegrationTest {
        @LocalServerPort
        private int serverPort;
    
        private String baseApiUrl;
    
        @BeforeEach
        void setUp() {
            baseApiUrl = "http://localhost:" + serverPort;
        }
    }
    

    要是你手动设了server.port=8081,那请求里绝对不能还写8080,这点很容易粗心搞错。

  • OAuth2/Spring Security配置可能阻塞了连接
    你的项目用到了OAuth和Spring Security,有可能是安全配置里的规则导致服务器虽然启动了,但无法处理请求。比如强制HTTPS、未正确放行测试端点、过滤器链配置错误等。可以先临时简化Security配置(比如禁用CSRF、放开所有请求),看看能不能成功连接,逐步排查是不是安全规则在搞鬼。

  • 检查嵌入式服务器是否真的正常启动
    去测试的启动日志里找找有没有类似Tomcat started on port(s): 8081 (http)的输出。如果没有,说明服务器根本没启动——那就要检查是不是缺了spring-boot-starter-web依赖,或者配置文件里有语法错误导致应用启动失败。

  • 本地端口占用或防火墙拦截
    哪怕你换了端口,也可能这个新端口被其他程序占用了,或者本地防火墙阻止了测试程序访问它。可以用netstat -ano | findstr :你的端口号(Windows)或者lsof -i :你的端口号(Linux/Mac)检查端口状态,也可以暂时关闭防火墙试试能不能连接。

  • 测试客户端的配置是否正确
    如果你用RestTemplate或者WebTestClient,要确保客户端配置和服务器端口匹配。比如用WebTestClient的话,直接用@AutoConfigureWebTestClient注解,它会自动绑定到启动的服务器,不用手动写端口,能避免很多人为错误。


内容的提问来源于stack exchange,提问作者Jesse James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:21:55