Go:运行测试并跳过一些包

The*_*hat 12 go

是否可以从测试中跳过目录.例如,鉴于下面的结构是可以测试mypackage,mypackage/other和mypackage/net但不是mypackage/scripts?我的意思是没有为每个写一个go测试命令(例如去测试;去测试网;去测试其他)

mypackage
mypackage/net
mypackage/other
mypackage/scripts
Run Code Online (Sandbox Code Playgroud)

Dav*_*e C 20

Go test获取要在命令行上测试的包列表(请参阅参考资料go help packages),这样您就可以通过单个调用测试任意一组包,如下所示:

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

或者,取决于你的shell:

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


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

go test `go list`
Run Code Online (Sandbox Code Playgroud)

你的评论说你想跳过一个子目录(取决于你的shell)或许这样:

go test `go list ./... | grep -v directoriesToSkip`
Run Code Online (Sandbox Code Playgroud)

和任何东西一样,如果你做了很多,你可以做一个shell别名/无论如何.


例如,如果您想要跳过测试的原因是您经常要跳过长/昂贵的测试,那么测试本身可以/应该检查testing.Short()t.Skip()适当地调用.

然后你可以运行:

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

或者从mypackage目录中:

go test -short ./...

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