1、单元测试:
Go 语言的测试工具只会认为以_test.go 结尾的文件是测试文件。
测试函数必须是公开的函数,以Test 单词开头,且函数的参数必须接收一个指向testing.T类型的指针,并且不返回任何值。
func TestDownload(t *testing.T){
// xxx
}
t.Fatal 不但报告这个单元测试已经失败,而且会向测试输出写一些消息,并立刻停止这个测试函数的执行。
t.Error 方法会报告测试失败,但是并不停止当前测试函数的执行
调用go test -v运行测试
2、基准测试:
基准测试是一种测试代码性能的方法。也可以用来识别某段代码的CPU或者内存效率问题,基准测试的文件名也必须以_test.go 结尾,同时也必须导入testing 包,基准测试函数必须以 Benchmark 开头,接受一个指向 testing.B 类型的指针作为唯一参数。
基准测试框架默认会在持续 1 秒的时间内,反复调用需要测试的函数,并且一定要将所有要进
行基准测试的代码都放到循环里,并且循环要使用 b.N 的值。
func BenchmarkSprintf(b *testing.B) {
number := 10
b.ResetTimer()
for i := 0; i < b.N; i++ {
fmt.Sprintf("%d", number)
}
}
go test -v -run="none" -bench="BenchmarkSprintf" -benchtime="3s"
go test -v -run="none" -bench=. -benchtime="3s"
-run 选项传递了字符串"none",来保证在运行制订的基
准测试函数之前没有单元测试会被运行
-benchtime 修改默认的时间