2 回答
TA贡献1871条经验 获得超8个赞
在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.
所以语法是你必须用空格或等号(没有撇号)分隔它,你指定的是一个正则表达式:
go test -bench BenchmarkMyTest
go test -run TestMyTest
或者:
go test -bench=BenchmarkMyTest
go test -run=TestMyTest
精确指定 1 个函数
由于指定的表达式是一个正则表达式,这也将匹配名称包含指定名称的函数(例如,名称以 this 开头的另一个函数,例如"BenchmarkMyTestB")。如果您只想匹配"BenchmarkMyTest",请附加正则表达式单词边界'\b':
go test -bench BenchmarkMyTest\b
go test -run TestMyTest\b
请注意,仅将其附加到末尾就足够了,就好像函数名称不以 开头一样"Benchmark",它不被视为基准函数,同样,如果它不以 开头"Test",则不被视为测试函数(无论如何都不会被拾取)。
TA贡献1777条经验 获得超10个赞
我发现这些答案不完整,所以这里有更多的主题......
以下命令运行以BenchmarkMyTest
(BenchmarkMyTest1, BenchmarkMyTest2, etc...)开头的所有基准测试,并跳过所有测试-run=^$ .
您还可以指定测试持续时间,-benchtime 5s
或者您可以强制b.ReportAllocs()
使用-benchmem
以获得如下值:
BenchmarkLogsWithBytesBufferPool-48 46416456 26.91 ns/op 0 B/op 0 allocs/op
最后的命令是:
go test -bench=^BenchmarkMyTest . -run=^$ . -v -benchtime 5s -benchmem
- 2 回答
- 0 关注
- 222 浏览
添加回答
举报