帮助你用地道 Go 实践编写测试、基准、模糊测试并提升覆盖率。
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "golang-testing" 技能: 1. 下载 https://raw.githubusercontent.com/affaan-m/ECC/main/skills/golang-testing/SKILL.md 2. 保存为 ~/.claude/skills/golang-testing/SKILL.md 3. 装好后重载技能,告诉我可以用了
请为这个 Go 函数编写表驱动测试,使用 testing 包,并覆盖正常输入、边界值和异常情况:
func Add(a, b int) int {
return a + b
}返回一个符合 Go 习惯的 _test.go 测试示例,包含测试用例表和断言逻辑。
请为下面这段 Go 代码编写 benchmark,比较不同实现的性能,并说明如何运行基准测试与解读结果: [粘贴你的 Go 代码]
返回可运行的 Benchmark 函数、执行命令,以及性能对比分析说明。
我想用 TDD 开发一个 Go 功能。请先根据需求写失败的测试,再给出最小可行实现,最后建议如何重构。需求如下: [粘贴功能需求]
返回按 TDD 顺序组织的测试代码、实现代码与重构建议。
Comprehensive Go testing patterns for writing reliable, maintainable tests following TDD methodology.
RED → Write a failing test first
GREEN → Write minimal code to pass the test
REFACTOR → Improve code while keeping tests green
REPEAT → Continue with next requirement
// Step 1: Define the interface/signature
// calculator.go
package calculator
func Add(a, b int) int {
panic("not implemented") // Placeholder
}
// Step 2: Write failing test (RED)
// calculator_test.go
package calculator
import "testing"
func TestAdd(t *testing.T) {
got := Add(2, 3)
want := 5
if got != want {
t.Errorf("Add(2, 3) = %d; want %d", got, want)
}
}
// Step 3: Run test - verify FAIL
// $ go test
// --- FAIL: TestAdd (0.00s)
// panic: not implemented
// Step 4: Implement minimal code (GREEN)
func Add(a, b int) int {
return a + b
}
// Step 5: Run test - verify PASS
// $ go test
// PASS
// Step 6: Refactor if needed, verify tests still pass
The standard pattern for Go tests. Enables comprehensive coverage with minimal code.
func TestAdd(t *testing.T) {
tests := []struct {
name string
a, b int
expected int
}{
{"positive numbers", 2, 3, 5},
{"negative numbers", -1, -2, -3},
{"zero values", 0, 0, 0},
{"mixed signs", -1, 1, 0},
{"large numbers", 1000000, 2000000, 3000000},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := Add(tt.a, tt.b)
if got != tt.expected {
t.Errorf("Add(%d, %d) = %d; want %d",
tt.a, tt.b, got, tt.expected)
}
})
}
}
func TestParseConfig(t *testing.T) {
tests := []struct {
name string
input string
want *Config
wantErr bool
}{
{
name: "valid config",
input: `{"host": "localhost", "port": 8080}`,
want: &Config{Host: "localhost", Port: 8080},
},
{
name: "invalid JSON",
input: `{invalid}`,
wantErr: true,
},
{
name: "empty input",
input: "",
wantErr: true,
},
{
name: "minimal config",
input: `{}`,
want: &Config{}, // Zero value config
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := ParseConfig(tt.input)
if tt.wantErr {
if err == nil {
t.Error("expected error, got nil")
}
return
}
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("got %+v; want %+v", got, tt.want)
}
})
}
}
func TestUser(t *testing.T) {
// Setup shared by all subtests
db := setupTestDB(t)
t.Run("Create", func(t *testing.T) {
user := &User{Name: "Alice"}
err := db.CreateUser(user)
if err != nil {
t.Fatalf("CreateUser failed: %v", err)
}
if user.ID == "" {
t.Error("expected user ID to be set")
}
})
t.Run("Get", func(t *testing.T) {
user, err := db.GetUser("alice-id")
if err != nil {
t.Fatalf("GetUser failed: %v", err)
}
…
帮助开发者为代码代理配置性能优化、安全防护与研究优先工作流。
提供数据库迁移、回滚与零停机发布的最佳实践指导,适用于多种 ORM 与 SQL 数据库。
通过双评审智能体对结果进行对抗式校验,提升输出发布前的可靠性
帮助你掌握地道 Rust 模式、所有权与并发实践,编写安全高性能应用。
基于 C++ Core Guidelines 编写、审查并重构更安全现代的 C++ 代码。
为 Claude Code 会话提供系统化校验流程,帮助检查结果正确性与质量。
帮助你用表驱动、子测试、基准与模糊测试编写地道的 Go 测试。
帮助用户掌握 Go 测试模式与 TDD,编写可靠的单元测试、基准与覆盖率分析。
提供地道 Go 语言模式与最佳实践,帮助构建健壮高效且易维护的应用
为 Go 项目制定测试驱动开发与质量保障策略,提升代码可靠性与可维护性。
帮助你系统掌握 Rust 测试模式与 TDD 实践,提升代码质量与可维护性。
提供地道 Go 设计模式与最佳实践,帮助编写健壮高效且易维护的应用