我有一个包和许多测试文件。web |- client.go |- client_test.go |- server.go |- server_test.go |- ...如果我想运行go test client_test.go,它会为我报告错误。package web // not the package name web_testfunc TestHost(t *testing.T) { hostPort, hostNoPort := hostPortNoPort()}// error: undefined hostPortNoPort// But this function actually defined in the client.go
2 回答

浮云间
TA贡献1829条经验 获得超4个赞
这行不通。原因是当您运行 go test 时,go 执行构建以创建测试可执行文件并运行它以获得结果。限制的来源是go build
从go help build
如果要构建的参数是来自单个目录的 .go 文件列表,则 build 将它们视为指定单个包的源文件列表。
当您仅将 client_test.go 作为输入时go test
,go build
将假定这个文件是一个完整的包。因此,它不会解析hostPortNoPort
已定义的文件。这会触发构建错误。
你只有两个选择。
将它放在 web_test 包中并运行
go test client_test.go
使用 go test -run 匹配测试函数名称
除非有一些用于测试函数名称的命名逻辑,否则选项 2 可能会很痛苦。
- 2 回答
- 0 关注
- 123 浏览
添加回答
举报
0/150
提交
取消