在 Go 语言中,测试是一个非常重要的部分。Go 语言自带了一个轻量级的测试框架,可以方便地编写和运行测试。
Go 语言的测试文件以 _test.go 结尾,并且使用 testing 包。测试文件中的测试函数必须以 Test 开头,并且接受一个 *testing.T 类型的参数。例如:
func TestAdd(t *testing.T) {
result := add(1, 2)
if result != 3 {
t.Errorf("add(1, 2) = %d; expected 3", result)
}
}
在测试函数中,我们可以使用 t.Errorf、t.Fatalf 和 t.Logf 等函数来输出测试信息,其中 t.Errorf 表示测试失败,t.Fatalf 表示测试失败并停止执行,t.Logf 则表示输出测试信息。
除了单元测试之外,Go 语言还提供了基准测试和示例测试。基准测试可以用来测试函数的性能,示例测试则可以用来展示函数的使用方式。示例测试的函数名必须以 Example 开头,例如:
func ExampleAdd() {
fmt.Println(add(1, 2))
// Output: 3
}
运行测试可以使用 go test 命令,在测试文件所在的目录下执行该命令即可。例如:
$ go test
PASS
ok example.com/pkg/math 0.011s
其中 PASS 表示测试通过,example.com/pkg/math 是测试文件所在的包路径。
需要注意的是,测试代码并不会被编译到最终的可执行文件中,因此测试代码中不能引用未导出的变量和函数。此外,测试代码应该是幂等的,也就是说,多次运行同一个测试函数应该得到相同的结果。