是否可以跳过/排除某些测试,使其不使用go test
运行?
我有相当多的集成类型测试,它们调用一个以标准go测试编写的rest服务,并使用go test
运行。当一个新特性被开发时,跳过一些测试有时是有用的,例如,如果新特性还没有部署在测试服务器上,我仍然想运行所有现有的测试(除了那些测试新特性的新测试)。
我知道-run
,但是我不想指定所有我想运行的测试,那会是一个很长的列表。同时我还不能写一个正则表达式来排除测试。
另一个选择是不提交不在同一分支中运行的测试,但是如果我可以指定要排除的内容,那会更容易。
4条答案
按热度按时间gjmwrych1#
Testing package有
SkipNow()
和Skip()
方法,因此,可以在单个测试之前添加类似以下内容:然后可以设置环境变量或运行
CI=true go test
将CI
设置为命令局部变量。另一种方法是使用短模式。
然后使用
go test -short
执行测试q7solyqu2#
正如VonC所说,您可以使用
+build
标记然后使用
-tags
参数运行测试://更新:不同逻辑:
或者您可以按名称调用特定测试,例如:
输出:
yizd12fk3#
Vadym Tyemirov's answer的补充。
当env CI不为空时,您可以在整个 Package 中使用
TestMain
跳过测试。3pvhb19x4#
go 1.20测试命令现在接受-skip以跳过测试、子测试或匹配的示例。
https://tip.golang.org/doc/go1.20