当测试多个包go test
时,除非出现故障,否则缓冲输出,但是在基准测试时默认为流输出。
// stream test output (no buffering) when no package has
// been given on the command line (implicit current directory)
// or when benchmarking.
// Also stream if we're showing output anyway with a
// single package under test. In that case, streaming the
// output produces the same result as not streaming,
// just more immediately.
testStreamOutput = len(pkgArgs) == 0 || testBench ||
(len(pkgs) <= 1 && testShowPass)
我并没有真正强迫用户使用这种行为,因为我没有看到在基准测试期间获得标准输出有多大用处。
以下是我的测试命令的示例,该命令编译覆盖率配置文件并对单个包执行基准测试:
go test -bench=. -benchmem -covermode=count -coverprofile=main.coverprofile PACKAGE
我错过了什么吗?即使在进行基准测试时,如何覆盖此行为并缓冲输出?
答案 0 :(得分:0)
如果您在基准测试期间编写输出,则会对基准测试结果产生影响。因此,它应该包含在基准中,不应推迟或抑制。如果您不想看到写输出的效果,请更改您的基准。