
go test -bench=. -run=^$ xxx/xxx-bench=.只有有了这个标记,命令才会进行性能测试。该标记的值.表明需要执行任意名称的性能测试函数
-run=^$这个标记用于声明需要执行哪些功能测试函数,这同样也是以函数名称为依据的。该标记的值^$意味着:只执行名称为空的功能测试函数,换句话说,不执行任何功能测试函数
准备工作:确定内部需要用到的命令,检查我们指定的代码包或源码文件的有效性,以及判断我们给与的标记是否合法
针对每个被测试代码包,依次的进行构建、执行包中符合要求的测试函数,清理临时文件,打印测试结果
通常会并发地对多个被测代码包进行功能测试,只不过,在最后打印测试结果的时候,它会依照我们给定的顺序逐个进行,让我们感觉它是在串行地执行测试流程
由于并发的测试会让性能测试的结果存在偏差,所以性能测试一般都是串行进行的,更具体地说,只有在所有构建步骤都做完之后,go test命令才会真正地开始进行性能测试
并且下一个代码包的性能测试,总会等到上一个代码包的性能测试的结果打印完成后才会开始,而且性能测试函数的执行也都会是串行的
go命令通常会缓存程序构建的结果,以便在将来的构建中重用。我们可以通过 go env GOCACHE命令来查看缓存目录路径。比如有一段测试代码,第一次执行go test XXX会输出测试所用时间,文件没有任何变更的情况下再次执行,得到的就是之前缓存的结果
可以运行go clean -testcache删除所有的测试结果缓存,不过这样做肯定不会删除任何构建结果缓存