go test

go test 命令是一个按照一定的约定和组织来测试代码的程序。在包目录内,所有以 _test.go 为后缀名的源文件在执行 go build 时不会被构建成包的一部分,它们是 go test 测试的一部分。

*_test.go 文件中,有三种类型的函数:测试函数、基准测试(benchmark)函数、示例函数。一个测试函数是以 Test 为函数名前缀的函数,用于测试程序的一些逻辑行为是否正确;go test 命令会调用这些测试函数并报告测试结果是 PASS 或 FAIL 。基准测试函数是以 Benchmark 为函数名前缀的函数,它们用于衡量一些函数的性能;go test 命令会多次运行基准测试函数以计算一个平均的执行时间。示例函数是以 Example 为函数名前缀的函数,提供一个由编译器保证正确性的示例文档。我们将在11.2节讨论测试函数的所有细节,并在11.4节讨论基准测试函数的细节,然后在11.6节讨论示例函数的细节。

go test 命令会遍历所有的 *_test.go 文件中符合上述命名规则的函数,生成一个临时的 main 包用于调用相应的测试函数,接着构建并运行、报告测试结果,最后清理测试中生成的临时文件。