如何运行所有 Golang 基准测试(包括子文件夹)

And*_*ras 3 testing benchmarking unit-testing go

我有一个 Go 应用程序,在根目录和名为“message”的子文件夹中包含许多单元和基准测试。

我执行以下命令从根运行所有单元测试,包括消息和任何其他子文件夹中的单元测试:

go test ./...
Run Code Online (Sandbox Code Playgroud)

我想在基准测试中实现相同的目标,即运行所有测试。以下内容适用于根目录中的内容:

go test -bench .
Run Code Online (Sandbox Code Playgroud)

/messages 文件夹中的基准测试将被忽略,这是预期的。所以我从根目录运行以下命令:

go test -bench ./...
Run Code Online (Sandbox Code Playgroud)

这根本无法识别,Go 似乎执行位于根目录中的单元测试。我什至尝试在命令中指定消息文件夹,如下所示:

go test -bench ./message
Run Code Online (Sandbox Code Playgroud)

……但也失败了。目前,如果我想在消息文件夹中运行基准测试,我必须 cd 进入该文件夹并执行

go test -bench .
Run Code Online (Sandbox Code Playgroud)

像上面一样。

那么正确的做法是什么呢?我如何告诉 Go 在根文件夹和子文件夹中查找基准测试?在 -bench 标志的情况下,正则表达式 arg 如何工作?显然它与单元测试运行程序的正则表达式不同。

End*_*imo 8

您应该使用./...当前工作目录及其所有子目录中的所有文件进行测试。如果您希望获得更详细的输出,可以使用该-v标志。另外,最好使用 来列出内存分配-benchmem

go test -v ./... -bench=. -run=xxx -benchmem
Run Code Online (Sandbox Code Playgroud)