基准测试
测试代码需要保证函数可重入性及无状态
定义
每个测试用例函数需要以Benchmark为前缀,eg:func Benchmark_XXX(b *testing.B) { ... })
基准测试原理
使用
测试文件中全部函数:go test -v -bench=. benchmark_test.go
自定义测试时间:go test -v -bench=. -benchtime=5s benchmark_test.go
统计内存分配:go test -v -bench=Alloc -benchmem benchmark_test.go
计时器控制
使用
重置数据:ResetTimer()
参考
go benchmark实践与原理
Go语言使用benchmark进行性能测试
基础知识
测试用例文件不会参与正常源码编译,不会被包含到可执行文件中
测试用例可以不传入 *testing.T 参数
执行测试
当前函数:go test -v -run TestA$ select_test.go
当前目录:go test -v . | - go test ./examples -vet off -v
递归子目录:go test -v ./...
终止单测
测试覆盖率
执行:<br>go test -cover -coverprofile=c.out {测试目录}<br>
查看:<br>go tool cover -html=c.out <br>go tool cover -func=c.out
参考1
参考2
单测
为什么需要单测?
提高代码质量
加深理解需求
利于重构与设计
定义
文件必须以_test结尾
每个测试用例函数需要以Test为前缀,eg:func TestXXX( t *testing.T )
testing包
func (t *T) Fail()
func (t *T) FailNow()
func (t *T) Log(args ...interface{})
func (t *T) Fatal(args ...interface{})
单测分类
mothod :面向接口开发
sqlmock
httpmock
Redis