如何编写 Go 语言的单元测试
· 阅读需 2 分钟
testing 包
testing 包是 Go 语言的标准库组成部分,专门用于支持自动化测试。该包提供了丰富的功能,允许开发者定义测试用例、记录测试结果,并利用一系列工具函数控制测试逻辑和报告测试状态。这包括处理失败、日志记录和条件性测试中断等功能。
示例代码
以一个基本的加法函数测试为例。首先,假设你有一个加法函数定义在 calculator.go 文件中
package calculator
// Add 返回两个整数的和
func Add(a, b int) int {
return a + b
}
对应的测试文件 calculator_test.go 包含如下代码
package calculator
import "testing"
// TestAdd 测试 Add 函数
func TestAdd(t *testing.T) {
result := Add(1, 2)
expected := 3
if result != expected {
t.Errorf("Add(1, 2) = %d; expected %d", result, expected)
}
}
编写测试的规则
测试文件名应以 _test.go 结尾,存放在与被测试源文件相同的包中。每个测试函数必须以 Test 开头,并接受一个 *testing.T 类型的参数。这些函数可以使用 testing 包提供的方法进行错误报告和日志记录
t.Errorf()和t.Error(): 当测试需要报告错误时使用,Errorf允许按格式输出。t.Fatalf()和t.Fatal(): 遇到无法继续的错误时调用,会立即终止测试。t.Log()和t.Logf(): 用于记录测试信息,这些信息在使用-v参数运行测试时显示。
运行测试
打开命令行或终端,在包含测试文件的目录下运行
go test
使用 -v 参数可以查看每个测试函数的详细输出信息。若只想运行特定的测试,可以使用 -run 参数,如
go test -run TestAdd