Go测试文件必须以_test.go结尾且与被测代码同包;测试函数须为func TestXxx(testing.T)签名;go test支持多种运行方式;testing.T非并发安全,需谨慎使用。
_test.go 结尾Go 的 go test 命令只会自动识别和运行后缀为 _test.go 的文件。如果命名为 utils_test.go,它会被识别;但写成 test_utils.go 或 utils_test.go.bak 就完全不会执行。
才能直接访问未导出的函数和变量unexportedFunc()
import 引入目标包,只测导出项func TestXxx(*testing.T) 是唯一被识别的测试函数签名Go 不支持自定义测试函数名或参数类型。只有形如 func TestSomething(t *testing.T) 的函数才会被 go test 扫描到。常见错误包括:
func testSomething(t *testing.T)(首字母小写 → 忽略)*testing.T 参数,或改成 *testing.B(那是基准测试,不是单元测试)func TestXxx(t *testing.T, ctx context.Context)(编译通过但不被识别)func TestAdd(t *testing.T) {
got := Add(2, 3)
want := 5
if got != want {
t.Errorf("Add(2,3) = %d, want %d", got, want)
}
}go test 运行时要注意工作目录和包路径在模块根目录下执行 go test 默认跑当前包;加 -v 可看详细输出,加 -run 可匹配测试函数名。
go test:仅运行当前目录下的 *_test.go
go test ./...:递归运行所有子目录中的测试(推荐 CI 场景)go test -run=^TestAdd$:精确匹配函数名(^ 和 $ 是正则锚点)go.mod 存在且 GO111MODULE=on(默认已启用)testing.T 的并发安全限制*testing.T 对象不是并发安全的——不能在 goroutine 中直接调用 t.Log 或 t.Error,否则可能 panic 或输出错乱。
t.Parallel() 标记测试可并行执行,但前提是测试间无共享状态t.Fatal/t.Fatalf 会终止当前测试函数,但不影响其他测试;而 os.Exit(1) 会直接退出整个 go test 进程,禁止使用func TestConcurrentAdd(t *testing.T) {
t.Parallel() // 允许与其他 Parallel 测试并发运行
results := make(chan int, 10)
for i := 0; i < 10; i++ {
go func() {
results <- Add(1, 1)
}()
}
for i := 0; i < 10; i++ {
if got := <-results; got != 2 {
t.Errorf("expected 2, got %d", got) // 在主 goroutine 中调用
}
}
}真正容易被忽略的是:测试文件里 import 的包,只要没被任何测试函数实际引用,Go 编译器会静默忽略——这意味着 _test.go 中写了 import "net/http" 却没用,不会报错,但后续加了 http 相关逻辑却忘记补 import,就会编译失败。检查方式很简单:go test -v -x 看实际执行的编译命令,或用 go list -f '{{.Imports}}' xxx_test.go 确认依赖是否完整。
# go
# golang
# golang测试
# Error
# 递归
# 并发
# 对象
# http
# 的是
# 就会
# 那是
# 才会
# 能在
# 要把
# 只会
# 自动识别
# 很简单
相关文章:
PHP 500报错的快速解决方法
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
如何在Golang中使用replace替换模块_指定本地或远程路径
建站之星24小时客服电话如何获取?
图册素材网站设计制作软件,图册的导出方式有几种?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
建站主机是否等同于虚拟主机?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
公司网站制作价格怎么算,公司办个官网需要多少钱?
已有域名和空间,如何快速搭建网站?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何将凡科建站内容保存为本地文件?
网站制作公司,橙子建站是合法的吗?
XML的“混合内容”是什么 怎么用DTD或XSD定义
,有什么在线背英语单词效率比较高的网站?
Python文件管理规范_工程实践说明【指导】
如何确保FTP站点访问权限与数据传输安全?
如何在建站宝盒中设置产品搜索功能?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
南平网站制作公司,2025年南平市事业单位报名时间?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
如何快速搭建虚拟主机网站?新手必看指南
建站之星代理如何优化在线客服效率?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
建站主机服务器选购指南:轻量应用与VPS配置解析
如何彻底删除建站之星生成的Banner?
如何规划企业建站流程的关键步骤?
历史网站制作软件,华为如何找回被删除的网站?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
如何通过虚拟机搭建网站?详细步骤解析
C++中引用和指针有什么区别?(代码说明)
行程制作网站有哪些,第三方机票电子行程单怎么开?
建站之星好吗?新手能否轻松上手建站?
盐城做公司网站,江苏电子版退休证办理流程?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何通过FTP服务器快速搭建网站?
如何快速建站并高效导出源代码?
公司网站设计制作厂家,怎么创建自己的一个网站?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
中山网站制作网页,中山新生登记系统登记流程?
网站微信制作软件,如何制作微信链接?
建站VPS能否同时实现高效与安全翻墙?
javascript基本数据类型及类型检测常用方法小结
制作网站的软件免费下载,免费制作app哪个平台好?
如何在宝塔面板中修改默认建站目录?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
如何在万网自助建站中设置域名及备案?
*请认真填写需求信息,我们会在24小时内与您取得联系。