_test.go
结尾,单元测试源码文件可以由多个测试用例(可以理解为函数)组成,每个测试用例的名称需要以 Test 为前缀,例如:
func TestXxx( t *testing.T ){
//......
}
_test.go
结尾;Test
或Benchmark
开头,后面可以跟任意字母组成的字符串,但第一个字母必须大写,例如 TestAbc(),一个测试用例文件中可以包含多个测试函数;(t *testing.T)
作为参数,性能测试以(t *testing.B)
做为参数; go test
命令来执行,源码中不需要 main() 函数作为入口,所有以_test.go
结尾的源码文件内以Test
开头的函数都会自动执行。package demo // 根据长宽获取面积 func GetArea(weight int, height int) int { return weight * height }
package demo import "testing" func TestGetArea(t *testing.T) { area := GetArea(40, 50) if area != 2000 { t.Error("测试失败") } }执行测试命令,运行结果如下所示:
PS D:\code> go test -v
=== RUN TestGetArea
--- PASS: TestGetArea (0.00s)
PASS
ok _/D_/code 0.435s
package demo import "testing" func BenchmarkGetArea(t *testing.B) { for i := 0; i < t.N; i++ { GetArea(40, 50) } }执行测试命令,运行结果如下所示:
PS D:\code> go test -bench="."
goos: windows
goarch: amd64
BenchmarkGetArea-4 2000000000 0.35 ns/op
PASS
ok _/D_/code 1.166s
package demo import "testing" func TestGetArea(t *testing.T) { area := GetArea(40, 50) if area != 2000 { t.Error("测试失败") } } func BenchmarkGetArea(t *testing.B) { for i := 0; i < t.N; i++ { GetArea(40, 50) } }执行测试命令,运行结果如下所示:
PS D:\code> go test -cover
PASS
coverage: 100.0% of statements
ok _/D_/code 0.437s
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有