go-test
1
总安装量
1
周安装量
#48576
全站排名
安装命令
npx skills add https://github.com/g1joshi/agent-skills --skill go-test
Agent 安装分布
mcpjam
1
claude-code
1
replit
1
junie
1
zencoder
1
Skill 文档
Go Test
Go has a built-in testing framework in the testing package. It follows Go’s effective, minimalist philosophy: no magic, just code.
When to Use
- Go Projects: It is the standard. No 3rd party runner needed.
- Benchmarks: Built-in support (
func BenchmarkXxx(b *testing.B)).
Quick Start
// main_test.go
package main
import "testing"
func TestAdd(t *testing.T) {
got := Add(1, 2)
want := 3
if got != want {
t.Errorf("Add(1, 2) = %d; want %d", got, want)
}
}
Run with go test ./....
Core Concepts
Table Driven Tests
The idiomatic way to write Go tests. Define a slice of structs with input/output, then loop range over them.
tests := []struct {
input int
want int
}{
{1, 2},
{2, 4},
}
for _, tc := range tests {
t.Run("subtest", func(t *testing.T) { ... })
}
Subtests (t.Run)
Allows hierarchical test execution and reporting.
Helper Functions
Use t.Helper() in utility functions so that failure logs point to the test caller, not the helper line.
Best Practices (2025)
Do:
- Use
testify/assert: If you hateif got != want, use thetestifylibrary forassert.Equal(t, want, got). It’s the most accepted “lib” extension. - Run with
-race:go test -race ./...to detect race conditions. - Parallelism: Use
t.Parallel()inside tests to speed up execution.
Don’t:
- Don’t use assertions for everything: Go prefers explicit error checking.
- Don’t ignore errors: If a setup step fails, use
t.Fatalto stop the test immediately.