在 Go 中,测试文件的文件名必须以 _test.go
作为后缀,比如 example_test.go
。这种文件中定义的函数必须有 Test
前缀,文件中可以实现多个测试函数,比如 TestDownload
和 TestUpload
。使用 go test
命令可以执行所有的测试函数。
在 Go 中,测试函数必须以 Test
为前缀,并且要求返回 nil
,否则就会被认为测试失败:func TestXXX(t *testing.T) { ... }
。另外,测试函数的参数必须为 *testing.T
,这允许测试函数报告失败或者使用测试库。
如果要在一个测试文件中测试多个函数,可以使用 testing.T
的 Run
方法来将测试分组:t.Run("group", func(t *testing.T) { ... })
。这样可以将一组相关测试函数放置在一起,可以清晰的看到测试的执行情况。此外,testing
包还提供了 Parallel
方法可以并行执行测试函数,以提高测试效率。
示例代码:
func TestExample(t *testing.T) {
t.Run("group1", func(t *testing.T) {
// Test code for group1
})
t.Run("group2", func(t *testing.T) {
// Test code for group2
})
t.Run("group3", func(t *testing.T) {
// Test code for group3
})
}
可以看到,测试组中可以有多个测试函数,它们可以通过 t.Run
方法来分组,以便更好的查看测试结果。
基准测试可以使用 testing.B
来测量函数的执行效率,函数格式为:func BenchmarkXXX(b *testing.B) { ... }
。它的参数 b
实现了一些方法,比如 b.N
表示测试的次数,b.ResetTimer
可以重置计时器,b.StopTimer
可以停止计时器。
示例可以使用 testing.B
来测试示例函数,格式如下:func ExampleXXX() { ... }
。它可以检查函数的返回值是否符合预期,以及函数是否会输出一些预期的文本到标准输出。