为何执行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
相关产品推荐
相关产品推荐

