缓冲测试输出

时间:2014-07-30 15:56:08

标签: go

当测试多个包go test时,除非出现故障,否则缓冲输出,但是在基准测试时默认为流输出。

From the 1.3 source

    // 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

我错过了什么吗?即使在进行基准测试时,如何覆盖此行为并缓冲输出?

1 个答案:

答案 0 :(得分:0)

如果您在基准测试期间编写输出,则会对基准测试结果产生影响。因此,它应该包含在基准中,不应推迟或抑制。如果您不想看到写输出的效果,请更改您的基准。