go测试

2023-03-22  本文已影响0人  mafa1993

go测试

go testing

  1. -bench regexp 执行响应的benchmarks,例如-bench=
  2. -cover 开启测试覆盖率
  3. -run regexp 只运行regexp匹配的函数 例如 -run=Array
  4. -v 显示测试详细指令
  5. 压测
import "testing"

// 必须以Benchmark开头,使用testing.B
func Benchmark_Add(b *testing.B){
    var n int;
    for i:=0;i<b.N;i++ {
        n++
    }
}
  1. go test -v -bench=. -benchtime=5s xx.go 默认1s
  2. 测试内存,在代码中添加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)
        }
    })
}

并行测试

  1. B.SetParallelism 设置并行数 P的数量

mock测试框架

  1. 自带测试包不能满足测试需求,例如调用外部接口等
  2. 常用mock包
    • Testify/mock
    • Monkey
    • go mock
  3. BDD测试框架s
上一篇下一篇

猜你喜欢

热点阅读