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

Travis构建Spring Boot项目报java.net.ConnectException连接被拒绝如何解决

问题原因与修复方案

核心原因

这个错误本质是测试执行阶段,Spring Boot应用没有在Travis CI环境的8080端口正常启动,RestAssured发起接口请求时没有对应的服务响应,所以抛出连接拒绝异常。

常见触发原因

  • 测试执行时序错误:Travis默认执行maven/gradle构建任务时,测试环节在应用打包前执行,此时Spring Boot内嵌容器还未启动,无法响应8080端口的请求
  • 测试注解配置错误:测试类未添加启动Spring Boot Web上下文的注解,运行测试时不会启动内嵌Tomcat服务
  • 端口配置冲突:Travis构建环境的8080端口被其他服务占用,或者项目配置文件中指定的server.port不是8080,服务启动后监听的端口和测试请求的端口不一致

修复方案

方案1:修正测试类配置(推荐)

使用Spring Boot测试的随机端口机制,避免固定端口冲突,同时保证测试运行前先启动Web容器:

// JUnit4版本注解
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class NoteAPITest {
    // 注入实际启动的随机端口
    @LocalServerPort
    private int port;

    private String API_ROOT;

    // 容器启动后拼接正确的接口地址
    @PostConstruct
    public void initApiRoot() {
        API_ROOT = "http://localhost:" + port + "/api/v1.0/notes";
    }

    @Test
    public void whenGetAllNotes_thenOK() {
        final Response response = RestAssured.get(API_ROOT);
        assertEquals(HttpStatus.OK.value(), response.getStatusCode());
    }
    // 其余测试方法保持不变
}

方案2:调整Travis构建流程

如果需要使用固定端口8080执行测试,修改.travis.yml配置,确保执行测试前先启动Spring Boot应用:

script:
  # 先启动Spring Boot应用,跳过测试
  - mvn clean spring-boot:start -DskipTests
  # 执行测试用例
  - mvn test
  # 测试完成后停止应用
  - mvn spring-boot:stop

方案3:核对端口配置

检查项目application.properties/application.yml配置文件,确认没有修改server.port为非8080的值,也没有添加spring.main.web-application-type=NONE这类关闭Web容器的配置。


内容的提问来源于stack exchange,提问作者Ergün Kargün

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:24:03