一尘不染

运行测试并跳过一些软件包

go

是否可以跳过测试目录。例如,鉴于下面的结构,是否可以测试mypackage,mypackage / other和mypackage /
net,但不能测试mypackage / scripts?我的意思是无需为每个脚本编写go test命令(例如,去测试;去测试网;去测试其他)

mypackage
mypackage/net
mypackage/other
mypackage/scripts

阅读 233

收藏
2020-07-02

共1个答案

一尘不染

Go test带有要在命令行上测试的软件包列表(请参阅参考资料go help packages),因此您可以通过一次调用来测试任意一组软件包,如下所示:

go test import/path/to/mypackage import/path/to/mypackage/other import/path/to/mypackage/net

或者,取决于您的外壳:

go test import/path/to/mypackage{,/other,/net}


您也许可以使用有趣的调用go list作为参数(同样,取决于您的shell):

go test `go list`

您的评论说您想跳过一个子目录,所以(取决于您的shell)也许是这样的:

go test `go list ./... | grep -v directoriesToSkip`

像其他任何事情一样,如果您做了很多,则可以为它设置shell别名。


例如,如果您要跳过测试的原因是您有经常要跳过的长时间/昂贵的测试,则测试本身可能/应该检查testing.Short()t.Skip()适当调用。

然后您可以运行:

go test -short import/path/to/mypackage/...

或从mypackage目录中:

go test -short ./...

您还可以使用其他东西testing.Short()来触发跳过。

2020-07-02