3 回答

TA贡献1862条经验 获得超7个赞
您可以使用...
(省略号)运算符来测试当前包的所有子包。像这样:go test ./...
。
如果您做一些更复杂的事情,例如使用该list
工具,您可能想稍后尝试其他解决方案。这样的(例如)go test $(go list ./... | grep [regex])
。这对于vendor
从测试中排除目录很有用。
您可能想知道的另一件事是gt
可以在此处找到的命令https://godoc.org/rsc.io/gt并将缓存添加到go test
命令中。
最后,请不要犹豫,阅读https://blog.golang.org/cover以获取有关 golang 代码覆盖率分析的信息。

TA贡献1805条经验 获得超10个赞
我觉得这很烦人,go test ./...当从项目根目录运行时,实际上会从pkg/pkg_name/文件夹运行。有一种方法可以通过cwd在init()helper 函数中设置来将测试设置为项目根。
我在这里找到了解决方案您可以在 _file 中尝试以下代码段:
func init() {
_, filename, _, _ := runtime.Caller(0)
dir := path.Join(path.Dir(filename), "../..") // change to suit test file location
err := os.Chdir(dir)
if err != nil {
panic(err)
}
}
上面的这段代码适用于我在pkg/$name/$name_test.go.

TA贡献1864条经验 获得超2个赞
只是运行sudo go test -v ./...
可能会失败,因为您可能没有为 GO 设置根环境,就像您设置非根环境一样。
您可以重置根目录中的所有内容,或者执行以下简单步骤:
sudo -E go test -v ./...
这将以 root 身份运行,但保留您的 env 设置。
添加回答
举报