【问题标题】:How to run all Golang benchmark tests including subfolders如何运行所有 Golang 基准测试,包括子文件夹
【发布时间】:2022-01-27 12:17:31
【问题描述】:

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

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

go test ./...

我想为基准测试实现相同的目标,即全部运行它们。以下适用于根目录中的那些:

go test -bench .

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

go test -bench ./...

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

go test -bench ./message

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

go test -bench .

如上。

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

【问题讨论】:

  • 你试过go test ./... -bench吗?还是go test -bench=. ./...

标签: unit-testing go testing benchmarking


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      相关资源
      最近更新 更多