Go程序测试分为:功能测试、基准测试(性能测试)、示例测试
- 测试源码文件的主名称应该以被测源码文件的主名称为前导,并且必须以“_test”为后缀
- 每个测试源码文件都必须至少包含一个测试函数。并且,从语法上讲,每个测试源码文件中,都可以包含用来做任何一类测试的测试函数,即使把这三类测试函数都塞进去也没有问题。
go 语言对测试函数的名称和签名都有哪些规定
- 对于功能测试函数来说,其名称必须以
Test
为前缀,并且参数列表中只应有一个*testing.T
类型的参数声明。 - 对于性能测试函数来说,其名称必须以
Benchmark
为前缀,并且唯一参数的类型必须是*testing.B
类型的。 - 对于示例测试函数来说,其名称必须以
Example
为前缀,但对函数的参数列表没有强制规定。
go test
性能测试:go test -bench=. 模式 . 匹配包中所有的基准测试函数。-bench=函数名。这样也是可以的
BenchmarkGetPrimes-8
被称为单个性能测试的名称,它表示命令执行了性能测试函数BenchmarkGetPrimes
,并且当时所用的最大 P 数量为8
。最大 P 数量相当于可以同时运行 goruntine 的逻辑 CPU 的最大个数。这里的逻辑CPU,也可以被视为CPU核心,但它不等同于计算机中真正的CPU核心,只是Go 语言运行时系统内部的一个概念,代表着它同时运行 goroutine 的能力。
可以通过调用 runtime.GOMAXPROCS 函数该表最大P数量,可以在运行 go test 命令时,加入标记 -cpu 来设置一个最大P数量的列表,以供命令在多次测试时使用