go测试
2023-03-22 本文已影响0人
mafa1993
go测试
go testing
- -bench regexp 执行响应的benchmarks,例如-bench=
- -cover 开启测试覆盖率
- -run regexp 只运行regexp匹配的函数 例如 -run=Array
- -v 显示测试详细指令
- 压测
import "testing"
// 必须以Benchmark开头,使用testing.B
func Benchmark_Add(b *testing.B){
var n int;
for i:=0;i<b.N;i++ {
n++
}
}
- go test -v -bench=. -benchtime=5s xx.go 默认1s
- 测试内存,在代码中添加b.ReportAllocs() go test 增加参数 -benchmem
func Benchmark_SyncPool(b testing.B){
// 关闭gc,防止gc影响测试结果
defer debug.SetGCPercent(debug.SetGCPercent(-1))
b.ResetTimer()
b.RunParallel(func(pb *testing.PB){
for pb.Next(){
v := _p.GET().(*message.Info)
_p.Put(v)
}
})
}
并行测试
- B.SetParallelism 设置并行数 P的数量
mock测试框架
- 自带测试包不能满足测试需求,例如调用外部接口等
- 常用mock包
- Testify/mock
- Monkey
- go mock
- BDD测试框架s