章节

15.1 单元测试

本篇学习 Go 单元测试文件、测试函数命名与 go test 命令,并能编写最小测试用例。

单元测试

概念说明

单元测试用于验证一个小范围函数或模块是否符合预期。
Go 内置 testing 包和 go test 命令,不需要额外安装测试框架。

测试文件通常和被测试文件放在同一个包中。
文件名必须以 _test.go 结尾,测试函数必须以 Test 开头。

语法/规则

  1. 测试文件命名为 xxx_test.go
  2. 测试函数签名是 func TestName(t *testing.T)
  3. 使用 t.Fatalft.Errorf 报告失败。
  4. 运行 go test 执行当前包测试。
  5. 运行 go test -v 可以显示更详细的测试输出。

被测试函数示例

1
2
3
4
5
package calc

func Add(a, b int) int {
	return a + b
}

测试函数示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
package calc

import "testing"

func TestAdd(t *testing.T) {
	got := Add(1, 2)
	want := 3
	if got != want {
		t.Fatalf("Add(1, 2) = %d, want %d", got, want) // 断言失败时立即终止当前测试
	}
}

运行命令:

1
go test -v

输出结果:

1
PASS

常见错误

  1. 测试文件没有以 _test.go 结尾,导致 go test 不识别。
  2. 测试函数不是 TestXxx 格式,导致不会被执行。
  3. 函数签名没有写 t *testing.T,导致测试函数无效。
  4. 只写成功路径测试,忽略边界值和错误路径。
本文禁止转载
使用 Hugo 构建
主题 StackJimmy 设计 由 Hobin 魔改
最近构建时间:2026-04-17 19:07:48 CST
载入天数...载入时分秒...
发表了 1 篇文章 · 发表了 152 篇笔记 · 总计 18 万 0 千字