3 回答
TA贡献1846条经验 获得超7个赞
为了在测试期间抑制输出,我使用以下代码。我修复了输出和日志记录。测试完成后,它会重置输出流。
func TestStartStowWrongCommand(t *testing.T) {
defer quiet()()
...
}
func quiet() func() {
null, _ := os.Open(os.DevNull)
sout := os.Stdout
serr := os.Stderr
os.Stdout = null
os.Stderr = null
log.SetOutput(null)
return func() {
defer null.Close()
os.Stdout = sout
os.Stderr = serr
log.SetOutput(os.Stderr)
}
}
TA贡献1856条经验 获得超17个赞
可以 通过使用以下命令运行测试来抑制输出go test .
:
$ go help test
Go test 以两种不同的模式运行:在没有包参数的情况下调用时的本地目录模式(例如,'go test'),以及在使用包参数调用时的包列表模式(例如 'go test math', 'go test ./ ...”,甚至“去测试。”)。
在本地目录模式下, go test 编译并测试在当前目录中找到的包源,然后运行生成的测试二进制文件。在这种模式下,缓存(下面讨论)被禁用。包测试完成后, go test 会打印一个摘要行,显示测试状态('ok' 或 'FAIL')、包名称和经过的时间。
在包列表模式下, go test 编译并测试命令行上列出的每个包。如果包测试通过, go test 只打印最后的“ok”摘要行。如果包测试失败, go test 会打印完整的测试输出。如果使用 -bench 或 -v 标志调用,即使通过包测试,go test 也会打印完整输出,以显示请求的基准测试结果或详细日志记录。
- 3 回答
- 0 关注
- 346 浏览
添加回答
举报