我用go test测试我的代码./ … -v -short。
不幸的是,-v只会在发生时打印出每个测试,但不会像在Java中那样在底部留下结果的摘要。这意味着,如果有…
失败测试用表示 FAIL 在输出中。因此,您所要做的就是过滤该单词的输出。
FAIL
在Unix系统上:
go test ./... |grep FAIL
在Windows上:
go test ./... |findstr FAIL
请注意,这纯粹是文本处理,它对go测试及其结果一无所知。这意味着如果测试输出单词,您可能会得到“误报” FAIL 即使它成功了。但在实践中,这几乎可以完成你想要的工作。
一种更复杂,更准确的方法就是通过 -json 国旗到 go test ,因此它生成JSON输出,您可以使用程序处理(例如,用Go本身编写)。失败的测试用带有的JSON对象表示 "Action":"fail" 场,例如
-json
go test
"Action":"fail"
{"Time":"2019-03-01T12:06:21.108544405+01:00","Action":"fail", "Package":"some/package","Test":"TestSomething","Elapsed":0.01}
即使您不想为此编写程序,过滤JSON输出也会减少误报的可能性(过滤为 "Action":"fail" ):
Unix的:
go test ./... -json |grep '"Action":"fail"'
视窗:
go test ./... -json |findstr /C:"\"Action\":\"fail\""