You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何执行go test仅运行main_test.go?如何使其执行所有_test后缀文件?

为什么go test只运行main_test.go?怎么让所有测试文件都执行?

这问题我碰到过好几次了,咱们一步步说清楚:

原因分析

  • Go的go test命令默认只针对当前工作目录对应的单个包执行测试。你根目录下的main.go和main_test.go属于同一个包(一般是package main),所以会被自动检测并运行。
  • 嵌套文件夹里的query_test.go属于另一个独立的包(比如如果文件夹叫query,包名可能是package query),go test默认不会递归扫描子目录里的其他包,因此这些测试文件就被忽略了。

解决方法

这里有几种实用的方式,按需选择:

  • 一次性运行所有包的测试(最推荐):在项目根目录执行go test ./...。这个命令会递归扫描当前目录下所有子目录,找到所有Go包并执行它们的测试文件,不管是根目录还是嵌套文件夹里的_test.go都会被运行。
  • 单独测试某个子目录的包:如果只想跑嵌套文件夹的测试,直接指定路径就行,比如go test ./query(把./query换成你的嵌套文件夹相对路径)。
  • 测试指定的多个包:如果想同时跑根目录和某个子目录的测试,可以明确列出包路径:go test . ./query。

另外要注意:确保query_test.go的包声明是正确的——如果它是测试嵌套文件夹里的业务代码,包名要么和业务代码一致(比如package query),要么用外部测试包(package query_test),只要包结构符合Go的规范,go test ./...就能正确识别到它。

内容的提问来源于stack exchange,提问作者sdfsdf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 15:07:29