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



我有一个Go应用程序,它在根目录和名为"消息";。

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

go test ./...

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

go test -bench .

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

go test -bench ./...

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

go test -bench ./message

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

go test -bench .

如上所述。

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

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

go test -v ./... -bench=. -run=xxx -benchmem

-bench标志使用正则表达式,以便在所有包中运行所有基准测试(-bench .(:go test -bench=. ./...

最新更新