Golang学习---test写法和benchmark写法

时间:2023-03-08 18:57:24

一、Test

  1. 每一个test文件须import一个testing

  2. test文件下的每一个test case 均必须用Test开头并且符合TestXxxx形式,否则go test会直接跳过测试不执行

  3. test case的入参为t *testing.T或b *testing.B

  4. t.Errof为打印错误信息,并且当前test case会被跳过

  5. t.SkipNow()为跳过当前test,并且直接按pass处理继续下一个test

  6. Go的test不会保证多个TestXxxx是顺序执行,但是通常会按顺序执行

  7. 使用t.Run来执行subtests可以做到控制test输出以及test顺序

  8. 使用TestMain作为初始化test,并且使用m.Run()来调试其它tests可以完成一些需要初始化操作的testing,比如数据库连接,文件打开,rest服务登录等。

  9. 如果没有在TestMain中调用m.Run()则除了TestMain以外的其它的tests都不会被执行

二、Benchmark

  1. benchmark函数一般以Benchmark开头

  2. benchmark的case一般会跑b.N次,而且每次执行都会如此

  3. 在执行过程中会根据实际case的执行时间是否稳定会增加b.N次数以达到稳定

  4. 命令:go test -bench=.

  5. 要确保被测试函数总能在一个时间达到稳态