我用go test ./... -v -short
测试我的代码。
不幸的是,-v
只在测试发生时打印出每个测试,但不像Java那样在底部留下结果摘要。这意味着如果任何测试在顶部某处失败,我必须向上滚动并查找单词FAIL
或在文本编辑器中搜索它。-failfast
标志也没有帮助,因为我的一些测试在第一次测试失败后仍然会由于某种原因被打印出来。
我并不关心在初始测试失败后是否运行测试。我只希望能够轻松地判断***任何***测试是否失败,最好是在一个地方(例如,通过或失败的测试数量的摘要,或者通过查看所有测试是否通过的标志)。
有没有一种方法可以很容易地判断是否有测试失败,因为我不想在仍然有测试失败的情况下意外地继续编码。
我使用的是64位Windows 10。
***更新:***非常感谢@icza提供的findstr
技巧。我后来意识到,我也想看到错误描述沿着测试失败,但不想运行go test
两次。这是我为CMD提出的(在Powershell上不工作):
go test ./... -v -short > test-results.txt & findstr "FAIL _test" test-results.txt
现在findstr
应该报告测试失败以及错误描述。如果您想查看完整的测试结果,只需打开test-results.txt
即可。
3条答案
按热度按时间sgtfey8w1#
失败的测试在输出中用
FAIL
表示。所以你所要做的就是过滤输出中的那个词。在Unix系统上:
在Windows上:
请注意,这是纯文本处理,它不知道任何关于go测试及其结果的信息。这意味着,如果测试输出单词
FAIL
,即使它成功了,你也可能会得到“误报”。但实际上,这基本上完成了你想要的工作。一个更复杂、更准确的方法是将
-json
flag传递给go test
,这样它就生成了JSON输出,你可以用程序(例如用Go语言编写的程序)来处理。即使你不想为此编写程序,过滤JSON输出也会减少误报的机会(过滤
"Action":"fail"
):Unix:
窗口:
t9aqgxwy2#
我发现安装gotestsum并在最后得到整洁的摘要是毫无痛苦的。
另一种方法,如果你只关心 count:
zf9nrax13#
这就是我的工作原理: