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

Go项目Github Actions执行go test报127.0.0.1:8069连接拒绝如何解决

问题成因
  1. 测试执行失败的核心原因是 github.com/Zaprit/Reflow/technicapi 包的测试代码尝试请求本地8069端口的HTTP服务,但GitHub Actions的运行环境中没有提前启动该端口对应的依赖服务,因此触发连接被拒绝的报错,和IPv6支持无关,你之前的排查方向有误。
  2. 你当前贴出的CI配置只有代码检查(golangci-lint)的逻辑,没有添加测试执行、依赖服务启动的相关步骤,也是测试无法正常运行的直接原因。
解决方案

你可以根据测试的类型选择以下任意一种方案处理:

  • 单元测试场景:Mock外部依赖
    用Go标准库的net/http/httptest或者第三方Mock工具模拟你要调用的8069端口接口的返回值,单元测试不需要真实发起网络请求,也不需要依赖外部服务运行,从根源避免环境依赖问题。
  • 集成测试场景:补充CI依赖服务启动步骤
    如果你跑的是集成测试必须依赖真实服务运行,需要修改你的CI配置,在执行go test前先启动对应8069端口的服务,同时补充测试执行的步骤,修改后的CI示例如下:
    # This lints and tests the Reflow project
    name: Lint & Test
    on:
      push:
        branches: [ master ]
      pull_request:
        branches: [ master ]
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
          - name: Setup Go environment
            uses: actions/setup-go@v2.1.3
            with:
              go-version: 1.17.1
              stable: true
              token: ${{ github.token }}
          - name: Run golangci-lint
            uses: golangci/golangci-lint-action@v2.5.2
          # 新增:启动依赖服务
          - name: Start dependent 8069 port service
            run: |
              # 替换为你实际的服务启动命令
              go run your/service/path/main.go &
              # 等待服务完成启动
              sleep 10
          # 新增:执行测试生成覆盖率
          - name: Run test with coverage
            run: go test -race -coverprofile=coverage.txt -covermode=atomic ./...
    
  • 临时跳过测试场景:给集成测试加标签过滤
    如果你暂时不需要在CI跑这类依赖外部服务的集成测试,可以给对应的测试文件加上构建标签,比如在测试文件头部添加//go:build integration,执行测试时添加参数过滤:go test -tags "!integration" -race -coverprofile=coverage.txt -covermode=atomic ./...,即可跳过这类集成测试,避免报错。

内容的提问来源于stack exchange,提问作者Henry Asbridge

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:24:05