go test是Go语言执行测试的标准方式,通过_test.go文件中的Test开头函数进行单元测试,Benchmark开头函数进行性能测试,支持-v、-run等选项控制执行行为。

在Go语言中,go test 是执行测试的标准方式。只要按照约定编写测试文件,就可以轻松运行单元测试、性能测试,并查看覆盖率等信息。
测试文件命名与结构
Go的测试文件必须以 _test.go 结尾,且通常放在被测代码所在的包目录下。测试函数名必须以 Test 开头,且接收一个 *testing.T 参数。
例如,假设有一个文件math.go,其中包含一个加法函数:
func Add(a, b int) int {
return a + b
}
对应的测试文件 math_test.go 应如下:
package main
import "testing"
func TestAdd(t *testing.T) {
result := Add(2, 3)
if result != 5 {
t.Errorf("期望 5,但得到了 %d", result)
}
}
运行基本测试
在项目根目录或包含测试文件的目录下,执行以下命令运行测试:
go test
立即学习“go语言免费学习笔记(深入)”;
如果测试通过,输出类似:ok example/math 0.001s
- -v:显示详细输出,列出每个测试函数的执行情况
-
-run:用正则匹配测试函数名,运行指定测试。例如:
go test -run=Add只运行函数名包含 Add 的测试
性能测试(基准测试)
Go还支持基准测试,用于测量函数性能。基准函数以 Benchmark 开头,接收 *testing.B 参数。
在 math_test.go 中添加:
func BenchmarkAdd(b *testing.B) {
for i := 0; i < b.N; i++ {
Add(2, 3)
}
}
运行基准测试:
go test -bench=.
BenchmarkAdd-8 1000000000 0.30 ns/op
测试覆盖率
Go内置了覆盖率统计功能。使用以下命令生成覆盖率数据:
go test -coverprofile=coverage.out
go tool cover -html=coverage.out
基本上就这些。只要遵循命名规范,go test 就能自动发现并执行测试,配合简洁的API,让测试变得简单高效。










