Skip to content

测试基建派发计划

🕒 Published at:

测试基建派发计划 ​

前两个 agent 做 Go 后端覆盖率 + 前端组件/composable 测试 本计划做测试基础设施:CI 流水线、覆盖率门禁、集成测试验证、Makefile 完善

当前缺失 ​

缺失项说明
CI 前端测试ci.yml 没有 vitest 步骤,前端测试只在本地跑
覆盖率门禁没有最低覆盖率要求,PR 可以降覆盖率
覆盖率报告没有生成 HTML 覆盖率报告
集成测试验证tests/integration/ 的测试从未在 CI 外验证过编译
Makefile 缺目标缺少 lint、frontend-test、coverage-html 等目标
前端 lint没有 eslint 配置和 CI lint 步骤

派发任务 ​

Agent 1: CI 流水线增强 ​

修改文件: .github/workflows/ci.yml

新增 job:

yaml
# ---------- 前端测试 ----------
frontend-test:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-node@v4
      with:
        node-version: 20
    - name: web/user 测试
      run: |
        cd web/user
        npm install --frozen-lockfile
        npx vitest run
    - name: web/admin 测试
      run: |
        cd web/admin
        npm install --frozen-lockfile
        npx vitest run

修改 test job:

  • 加覆盖率输出:go test -coverprofile=coverage.out -covermode=atomic
  • 加覆盖率门禁脚本:检查总覆盖率不低于阈值

Agent 2: Makefile 完善 ​

修改文件: Makefile

新增目标:

makefile
# 前端测试
test-frontend:
	cd web/user && npx vitest run
	cd web/admin && npx vitest run

# 全量测试(Go + 前端)
test-all: test test-frontend

# 覆盖率 HTML 报告
coverage-html:
	cd services/core && go test -coverprofile=/tmp/core.out ./... && go tool cover -html=/tmp/core.out -o /tmp/core.html
	# ... 其他模块

# Go lint(需安装 golangci-lint)
lint:
	for d in services/*/; do [ -f "$d/go.mod" ] && (cd "$d" && golangci-lint run ./...); done

# 集成测试(需 Docker)
test-integration:
	cd tests/integration && docker compose -f docker-compose.test.yml up -d --wait
	sleep 15
	go test -tags=integration -count=1 -v ./tests/integration/...
	cd tests/integration && docker compose -f docker-compose.test.yml down -v

Agent 3: 集成测试验证 + 覆盖率脚本 ​

任务:

  1. 验证集成测试编译通过:

    bash
    cd /home/a1/mybilibili && go test -tags=integration -c ./tests/integration/ -o /dev/null
  2. 创建覆盖率汇总脚本 scripts/coverage.sh:

    bash
    #!/bin/bash
    # 汇总所有模块覆盖率,输出表格
    for d in shared/pkg services/core services/search services/ai services/msg-danmaku services/live services/studio services/work services/bili-proxy; do
      cd $d && go test -coverprofile=/tmp/cov.out ./... 2>&1 | grep "^ok"
      cd ..
    done
  3. 创建覆盖率门禁脚本 scripts/coverage-check.sh:

    bash
    #!/bin/bash
    # 检查总覆盖率不低于阈值(如 70%)
    THRESHOLD=70
    # 解析 go test 输出,检查是否达标

注意事项:

  • 不要修改任何测试文件
  • 只修改 CI/Makefile/脚本
  • 写完后验证:cd /home/a1/mybilibili && make test-frontend(如果 node_modules 存在)
  • 返回修改后的文件内容和验证结果