文件结构:
math.go:待测试的包
math_test.go:单元测试
bench_test.go:压力测试
math.go
package main func Add(a int, b int) int { return a + b } func Sub(a int, b int) int { return a - b }
单元测试:
math_test.go
package main import "testing" func TestAdd(t *testing.T) { a := 10 b := 20 c := Add(a, b) if c != 30 { t.Fatalf("add func error, c = %d", c) } t.Logf("a = %d b = %d sum = %d\n", a, b, c) } func TestSub(t *testing.T) { a := 50 b := 20 c := Sub(a, b) if c != 30 { t.Fatalf("sub func error, c = %d", c) } t.Logf("a = %d b = %d sub = %d\n", a, b, c) }
在文件所在的路径下,命令行执行
//go test -v 显示详细过程,也可以配合-run使用 //go test -run TestAdd 只测试TestAdd方法 //go test -run TestSub 只测试TestSub方法 go test
压力测试:
bench_test.go
package main import "testing" //注意命名规范 Benchmark+首字母大写的方法名 参数固定 func BenchmarkAdd(b *testing.B) { for i := 0; i < b.N; i++ { a := 10 b := 20 Add(a, b) } } //注意命名规范 Benchmark+首字母大写的方法名 参数固定 func BenchmarkSub(b *testing.B) { for i := 0; i < b.N; i++ { a := 10 b := 20 Sub(a, b) } }
在文件所在的路径下,命令行执行
//go test -bench BenchmarkAdd 只压测BenchmarkAdd方法 //go test -bench BenchmarkSub 只压测BenchmarkSub方法 //go test -bench . 点表示测试该路径下所有压力测试 go test -bench .