go 测试:在失败时基准测试不打印任何内容

csbfibhn  于 5个月前  发布在  Go
关注(0)|答案(3)|浏览(51)

基准函数可以调用Log、Error和Fatal,但如果使用Benchmark函数运行基准,所有消息都会被丢弃。
https://play.golang.org/p/fd5Ed-il70V
也许应该将消息打印到标准错误输出?

iovurdzv

iovurdzv1#

Hi,我确认输出被丢弃了,这里是在基准测试上下文中使用的写入器
go/src/testing/benchmark.go
第772行 fbc6a97
| | w: discard{}, |
来自Log、Error或Fatal的调用将不打印任何内容,因为discard写入器的Write调用什么也不做。
go/src/testing/benchmark.go
第783行到第785行 fbc6a97
| | typediscardstruct{} |
| | |
| | func (discard) Write(b []byte) (nint, errerror) { returnlen(b), nil } |

plupiseo

plupiseo2#

我今天偶然发现了这个,有什么更新吗?这看起来是一个相当有说服力的例子,我希望它能做以下其中一件事:

  1. testing.Benchmark 接受 io.Writer 作为输入。
  2. 允许用户创建一个自定义的 testing.B 并在其上调用 Benchmark
j0pj023g

j0pj023g3#

如果团队中的任何人同意创建一个新的函数,该函数接受一个io.Writer并在这里使用它,可以参考以下代码:

// go/src/testing/benchmark.go
func (b *B) Discard(w io.Writer) {
 // 省略具体实现
}

添加和测试应该相当简单。

相关问题