我有一个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=. ./...