如何在没有 _test 的情况下进行测试

我有一个包和许多测试文件。


web

 |- client.go

 |- client_test.go

 |- server.go

 |- server_test.go

 |- ...

如果我想运行go test client_test.go,它会为我报告错误。


package web  // not the package name web_test


func TestHost(t *testing.T) {

      hostPort, hostNoPort := hostPortNoPort()

}


// error: undefined hostPortNoPort

// But this function actually defined in the client.go


慕婉清6462132
浏览 124回答 2
2回答

浮云间

这行不通。原因是当您运行 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 可能会很痛苦。

慕森王

尝试这个go test -v client_test.go也许它可以帮助你
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go