Skip to the content.

单元测试

默认的情况下,go test命令不需要任何的参数,它会自动把你源码包下面所有 test 文件测试完毕

单元测试文件必须以_test结尾,例:hello_test.go

每个测试用例函数需要以Test为前缀

func TestXXX( t *testing.T )

go test 命令

go test 参数

#指定某测试文件的某方法

go test -v -run TestA hello_test.go

基准测试

基准测试可以测试一段程序的运行性能及耗费 CPU 的程度

基准测试函数需以 Benchmark 开头

benchmark_test.go

func Benchmark_Add(b *testing.B) {
    var n int
    for i := 0; i < b.N; i++ {
        n++
    }
}
go test -v -bench=. benchmark_test.go

基准测试框架对一个测试用例的默认测试时间是 1 秒

自定义测试时间

go test -v -bench=. -benchtime=5s benchmark_test.go

测试内存

基准测试可以对一段代码可能存在的内存分配进行统计

func Benchmark_Alloc(b *testing.B) {
    for i := 0; i < b.N; i++ {
        fmt.Sprintf("%d", i)
    }
}

-benchmem参数以显示内存分配情况

go test -v -bench=Alloc -benchmem benchmark_test.go