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

How to run all Golang benchmark tests including subfolders

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

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

go test ./...

我想在基准测试中达到同样的效果,即 运行 所有这些。以下适用于根目录中的那些:

go test -bench .

/messages 文件夹中的基准测试被忽略,这是预期的。所以我 运行 从根开始以下内容:

go test -bench ./...

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

go test -bench ./message

...但也失败了。目前,如果我想 运行 消息文件夹中的基准测试,我必须 cd 到该文件夹​​并执行

go test -bench .

同上。

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

-bench flag 采用正则表达式 运行 所有包中的所有基准(-bench .):go test -bench=. ./...

您应该使用 ./... 来基准化当前工作目录及其所有子目录中的所有文件。如果您希望获得更详细的输出,您可以使用 -v 标志。使用 -benchmem.

列出内存分配也很好
go test -v ./... -bench=. -run=xxx -benchmem