【发布时间】:2015-11-09 20:13:07
【问题描述】:
我如何让go test several/packages/... 在第一次测试失败后停止?
尽管已经有一些东西可以使用,但构建和执行其余测试需要一些时间。
【问题讨论】:
-
我认为您必须自己展开调用,方法是在每个包上运行 go test 并停止循环。我怀疑有一个标志可以做你想做的事。
标签: unit-testing go
我如何让go test several/packages/... 在第一次测试失败后停止?
尽管已经有一些东西可以使用,但构建和执行其余测试需要一些时间。
【问题讨论】:
标签: unit-testing go
Go 1.10 添加新标志failfast 进行测试:
新的 go test -failfast 标志会在任何测试失败后禁用运行其他测试。请注意,允许完成与失败测试并行运行的测试。
但是,请注意这在跨包中不起作用:https://github.com/golang/go/issues/33038
这里有一个解决方法:
for s in $(go list ./...); do if ! go test -failfast -v -p 1 $s; then break; fi; done
【讨论】:
为了加快构建阶段,您可以运行
go test -i several/packages/...
在测试之前构建和安装作为测试依赖项的包。
要在第一次失败后停止,您可以使用类似
go test several/packages/... | grep FAILED | head -n 1
【讨论】:
go test 对其进行测试,但如果它的实现方式与其他 Unix 实用程序相同,则应在第一次出现 FAILED 时通过 SIGPIPE 终止。