从根项目文件夹运行 go 测试

我必须从同事那里接手一个围棋项目,我以前从未接触过围棋,它没有测试,所以我开始添加它们但我无法运行它们。


用于运行测试的 go 命令是go test但它似乎不在根级别运行。


我的项目结构是:


/project/main.go

/project/engine/*.go

/project/api/*.go

如果我cd进入engine或api,并运行go test它可以工作但不在根文件夹中。


cd /project

go test


 ?      /project    [no test files]

反正有没有从根运行所有测试?


白衣非少年
浏览 298回答 3
3回答

牧羊人nacy

您可以使用...(省略号)运算符来测试当前包的所有子包。像这样: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 代码覆盖率分析的信息。

holdtom

我觉得这很烦人,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.

慕斯王

只是运行sudo go test -v ./...可能会失败,因为您可能没有为 GO 设置根环境,就像您设置非根环境一样。您可以重置根目录中的所有内容,或者执行以下简单步骤:sudo -E go test -v ./...这将以 root 身份运行,但保留您的 env 设置。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python