跳到主要内容

如何编写 Go 语言的单元测试

· 阅读需 2 分钟
素明诚
Full stack development

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