我有这个基准函数:
BenchmarkMyTest(b *testing.B) {
}
Run Code Online (Sandbox Code Playgroud)
我只想运行这个函数而不运行所有其他测试,但该命令对我来说从来没有用过。
go test -bench='BenchmarkMyTest'
or
go test -run='BenchmarkMyTest'
Run Code Online (Sandbox Code Playgroud)
在 Go 中运行单个基准测试函数的正确方法是什么?它说使用正则表达式,但我找不到任何文档。
谢谢,
在 Command Go 中描述:测试标志的描述:
-bench regexp
Run benchmarks matching the regular expression.
By default, no benchmarks run. To run all benchmarks,
use '-bench .' or '-bench=.'.
-run regexp
Run only those tests and examples matching the regular
expression.
Run Code Online (Sandbox Code Playgroud)
所以语法是你必须用空格或等号(没有撇号)分隔它,并且你指定的是一个正则表达式:
go test -bench BenchmarkMyTest
go test -run TestMyTest
Run Code Online (Sandbox Code Playgroud)
或者:
go test -bench=BenchmarkMyTest
go test -run=TestMyTest
Run Code Online (Sandbox Code Playgroud)
精确指定 1 个函数
由于指定的表达式是正则表达式,因此这也将匹配名称包含指定名称的函数(例如名称以 this 开头的另一个函数,例如"BenchmarkMyTestB"
)。如果您只想匹配"BenchmarkMyTest"
,请附加正则表达式单词边界'\b'
:
go test -bench BenchmarkMyTest\b
go test -run TestMyTest\b
Run Code Online (Sandbox Code Playgroud)
请注意,仅将其附加到末尾就足够了,就好像函数名称不以 开头一样"Benchmark"
,它不被视为基准函数,同样,如果它不以 开头"Test"
,则不被视为测试功能(并且无论如何都不会被拾取)。