go测试学习笔记 | 青训营笔记

18 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天

Go Test 命令是 Go 语言中一个用于按照一定的约定和组织来测试代码的程序。在包目录内,所有以 _test.go 为后缀名的源文件在执行 go build 时不会被构建成包的一部分,它们是 Go Test 测试的一部分。在 _test.go 文件中,有三种类型的函数:测试函数、基准测试(benchmark)函数、示例函数。

测试函数是以 Test 为函数名前缀的函数,用于测试程序的一些逻辑行为是否正确。Go Test 命令会调用这些测试函数并报告测试结果是 PASS 或 FAIL。基准测试函数是以 Benchmark 为函数名前缀的函数,它们用于衡量一些函数的性能。Go Test 命令会多次运行基准测试函数以计算一个平均的执行时间。示例函数是以 Example 为函数名前缀的函数,提供一个由编译器保证正确性的示例文档。 Go Test 命令会遍历所有的 _test.go 文件中符合命名规则的函数,生成一个临时的 main 包用于调用相应的测试函数,接着构建并运行、报告测试结果,最后清理测试中生成的临时文件。每个测试函数必须导入 testing 包。测试函数的名字必须以 Test 开头,可选的后缀名必须以大写字母开头。

Go Test 命令可以根据不同的标记来运行测试。例如,通过 -v 标记可以详细地展示每个测试函数的运行结果,而 -run 标记可以过滤出需要运行的测试函数。

for _, test := range tests {
    if got := IsPalindrome(test.input); got != test.want {
        t.Errorf("IsPalindrome(%q) = %v", test.input, got)
    }
}

示例代码包含一个 IsPalindrome 函数,用于检查一个字符串是否从前向后和从后向前读都是一样的。测试代码包含了多个测试函数,用于测试 IsPalindrome 函数的正确性。