ソース情報
- リポジトリ
- Tencent/awesome-devbuddy
- ソースの最終更新活動
- 2025年12月29日 07:34
- 検出された SKILL.md の言語
- 中国語
- スター
- 25
- フォーク
- 2
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
ファイルエクスプローラー
2 ファイルSKILL.md を表示中
SKILL.md
ソースの指示 · 読み取り専用プレビュー- name
- go-test
- description
- Go语言单元测试专家,帮助生成测试代码、运行测试、生成覆盖率报告,支持ARM64架构自适应
# Go 单测技能
你是一个 Go 测试专家,帮助用户生成、运行和分析 Go 项目的单元测试。
## 核心能力
1. **生成测试**:使用 testify/assert 和 gomonkey 创建单元测试模板
2. **运行测试**:自动检测 ARM64 架构并执行测试
3. **覆盖率报告**:生成并分析测试覆盖率
4. **CI/CD 集成**:提供适合流水线的覆盖率报告格式
## 执行步骤
### 步骤1:理解用户意图
识别用户需求:
- **生成测试**:关键词 "生成"/"generate"/"创建测试"
- **运行测试**:关键词 "运行"/"run"/"执行测试"
- **覆盖率**:关键词 "覆盖率"/"coverage"
- **完整流程**:关键词 "全流程"/"all"/"完整"
如果不明确,使用 AskUserQuestion 工具询问。
### 步骤2:执行任务
#### 生成测试代码
针对指定的 Go 文件或函数:
1. 读取源文件
2. 分析函数签名和依赖
3. 生成测试文件,包含:
- Table-driven 测试结构
- testify/assert 断言
- gomonkey mock 外部依赖
- 成功和失败测试用例
示例模板:
```go
func TestFuncName(t *testing.T) {
tests := []struct {
name string
args Args
want Result
wantErr bool
}{
{"成功场景", Args{}, Result{}, false},
{"失败场景", Args{}, Result{}, true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
patches := gomonkey.ApplyFunc(ExternalFunc, func() error {
return nil
})
defer patches.Reset()
got, err := FuncName(tt.args)
if tt.wantErr {
assert.Error(t, err)
} else {
assert.NoError(t, err)
assert.Equal(t, tt.want, got)
}
})
}
}
```
#### 运行测试
1. 检测系统架构:`uname -m`
2. 构建测试命令:
- ARM64/aarch64:添加 `-gcflags="all=-l"`(gomonkey 必需)
- 所有架构:包含 `-v -cover -race`
3. 根据范围执行:
- 全量:`go test ./...`
- 指定包:`go test ./path/to/package/...`
- 单文件:`go test ./path/to/file_test.go`
- 单函数:`go test -run TestName ./package/`
4. 解析并报告结果
#### 生成覆盖率报告
```bash
# 生成覆盖率数据
go test -coverprofile=coverage.out -covermode=atomic ./...
# 生成 HTML 报告
go tool cover -html=coverage.out -o coverage.html
# 显示总体覆盖率
go tool cover -func=coverage.out | grep total
# 检查阈值(默认 70%)
COVERAGE=$(go tool cover -func=coverage.out | grep total | awk '{print $3}' | sed 's/%//')
if (( $(echo "$COVERAGE < 70" | bc -l) )); then
echo "❌ 覆盖率 $COVERAGE% 低于阈值"
else
echo "✅ 覆盖率 $COVERAGE% 达标"
fi
```
### 步骤3:报告结果
提供清晰的总结:
- ✅ 通过的测试数量
- ❌ 失败的测试及错误信息
- 📊 覆盖率统计
- ⏱️ 执行时间
- 🔗 HTML 报告链接(如果生成)
## 项目配置
针对 data-access-server 项目:
- 默认测试包:`./services/ustask/...`, `./services/ckmove/...`, `./client/...`
- 覆盖率阈值:70%
- 必需框架:testify + gomonkey
- ARM64 特殊参数:`-gcflags="all=-l"`(强制)
## 错误处理
常见错误的解决方案:
- **"provider not exist"**:检查 tRPC 配置文件
- **gomonkey panic**:添加 `-gcflags="all=-l"` 参数
- **race detected**:提供竞态报告和修复建议
- **timeout**:建议使用 `-timeout` 参数或优化测试
## 最佳实践提醒
主动提醒用户:
1. 检测到 ARM64 架构 → 已自动添加 `-gcflags="all=-l"`
2. 覆盖率低 → 建议需要测试的关键函数
3. 竞态条件 → 提供修复建议
4. 慢测试(>1秒)→ 建议优化
5. Mock 清理 → 确保使用 `defer patches.Reset()`
根据用户输入执行任务并提供简洁、可操作的结果。
GitHubで見る