Go 测试模块

介绍 testing 包、测试函数约定、包级测试方式以及通过 -run 筛选测试用例。

已发布文章软件工程入门3 分钟阅读发布于 2026年8月21日更新于 2026年8月28日
文章目录
  1. Go 测试模块
LOCAL NOTE高亮并记笔记
0 / 1000 · 只保存在这台设备
READER NOTESGo 测试模块》的本机笔记

Go 测试模块

Go 语言通过 go test 命令和标准库的 testing 包提供内置测试能力。

Go 测试代码通常放在以 _test.go 结尾的文件中。测试函数名以 Test 开头,Test 后的第一个字符不能是小写字母,并接收一个 *testing.T 参数,例如:

// go-testing/add/add_test.go
package add


import (
    "testing"
)


func TestAdd(t *testing.T) {
    got := Add(2, 3)
    want := 5
    if got != want {
        t.Errorf("want %d, but got %d", want, got)
    }
}

假设 add_test.go 中测试的 Add 函数定义在同一包的 functions.go 中。

当你运行 go test add_test.go 时,Go 会按显式文件列表构建临时测试包,不会自动加入同目录的 functions.go,因此会因为找不到 Add 而报 undefined: Add

日常测试应以包为单位运行。go test 会编译当前包需要的普通 .go 文件与 _test.go 文件;显式传单个文件会绕开正常的包级测试方式。

# 方式一:推荐,测试当前包
go test

# 方式二:显式指定当前包
go test .

# 方式三:手动列出文件(不推荐)
go test add_test.go functions.go

# 显示每个测试用例的执行详情
go test -v

go test 还支持通过 -run 选择测试用例,参数是用于匹配测试名称的正则表达式:

go test -v -run=.           # 运行名称能被正则匹配的测试
go test -v -run=TestAdd     # 运行名称中匹配 TestAdd 的测试
go test -v -run=^TestAdd$   # 只运行名称为 TestAdd 的测试
go test -v -run=^$          # 不运行普通测试函数
JARVIS · 当前文章

有哪里没看懂?可以只问这篇。

Jarvis 会限定在《Go 测试模块》及其公开关联内容中检索,并把引用定位回原文章节。

JARVIS / ARTICLE针对《Go 测试模块》提问
当前范围Go 测试模块不会悄悄扩大到全站
0 / 1000

准备好了。当前只会围绕Go 测试模块回答。

READER SIGNAL

这篇内容对你有帮助吗?

不需要登录。你的反馈会直接进入作者待处理列表。