如何 运行 所有 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
我有一个 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