Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 第一次测试失败时使用“go test”停止`_Unit Testing_Go - Fatal编程技术网

Unit testing 第一次测试失败时使用“go test”停止`

Unit testing 第一次测试失败时使用“go test”停止`,unit-testing,go,Unit Testing,Go,在第一次测试失败后,如何让去测试几个/packages/…停止 构建和执行其余的测试需要一些时间,尽管已经有一些东西可以使用。要加快构建阶段,您可以运行它 go test -i several/packages/... 在测试之前,构建和安装作为测试依赖项的软件包 要在第一次失败后停止,可以使用 go test several/packages/... | grep FAILED | head -n 1 使用 Go 1.10添加一个新标志failfast进行测试: 新的go测试-failfa

在第一次测试失败后,如何让
去测试几个/packages/…
停止


构建和执行其余的测试需要一些时间,尽管已经有一些东西可以使用。

要加快构建阶段,您可以运行它

go test -i several/packages/...
在测试之前,构建和安装作为测试依赖项的软件包

要在第一次失败后停止,可以使用

go test several/packages/... | grep FAILED | head -n 1
使用


Go 1.10添加一个新标志
failfast
进行测试:

新的go测试
-failfast
标志将在任何测试失败后禁用运行其他测试。请注意,允许与失败测试并行运行的测试完成

但是,请注意,这不适用于所有包:

这里有一个解决方法:

for s in $(go list ./...); do if ! go test -failfast -v -p 1 $s; then break; fi; done

我认为您必须通过在每个包上运行go测试并停止循环来展开调用。我怀疑是否有一个标志可以做你想做的。你的第二个建议仍然运行所有的测试,但只是没有打印出来。老实说,我没有用“go test”测试它,但是如果它是以与其他Unix实用程序相同的方式实现的,那么在第一次出现故障时,它应该通过SIGPIPE终止。@kostya我从来没有听说过IPC的这项技术。。。Thanx解释了否决票:有更好的方法来传播go测试中的失败,比如
t.Fatal()
。使用
t.Fatal
测试执行将立即停止,您可以将其与
-failfast
配对,以实际停止所有测试。因此,如果您使用
os.Exit(1)
之类的工具进行测试,则退出(1)。/…我认为您将只停止一个进程,而不是整个测试执行。因此,实际上很少有次您希望在测试中使用
os.Exit(1)
,在我的情况下不会发生任何事情。使用go版本go1.12.1 darwin/amd64运行时使用
go测试-failfast./…
for s in $(go list ./...); do if ! go test -failfast -v -p 1 $s; then break; fi; done