在我的Go包中有几个基准文件,如map1_benchmark_test.go
和map2_benchmark_test.go
。在每个*_benchmark_test.go
文件中,都有多个基准函数,例如func BenchmarkMapTravel(b *testing.B)
和func BenchmarkMapGet(b *testing.B)
。
问题是,我如何只测试一个基准函数?
我尝试阅读一些手册,并通过运行go help test
来获得基准测试。
答案 0 :(得分:53)
-test.bench pattern Run benchmarks matching the regular expression. By default, no benchmarks run. -test.run pattern Run only those tests and examples matching the regular expression.
为方便起见,测试二进制文件的这些
-test.X
标志中的每一个都是 也可以在-X
'本身作为标记go test
使用。
求助,
$ go help testflag
例如,
go test -test.bench MapTravel
go test -test.bench MapGet
或
go test -bench MapTravel
go test -bench MapGet
要绕过测试功能,请添加一个过滤掉每个测试的-test.run
模式。例如,
go test -test.bench MapTravel -test.run=thisexpressionwontmatchanytest
或
go test -bench MapTravel -run=^$
答案 1 :(得分:2)
您无法提供任何标志,只会运行基准测试(或仅运行一个基准测试)。这些only flags related是:
-bench regexp 运行与正则表达式匹配的基准。 默认情况下,不运行基准测试。要运行所有基准测试, 使用' -bench。'或者' -bench =。'。
-run regexp 仅运行与常规匹配的测试和示例 表达
因此,如果您只想运行一个基准测试,则可以执行此操作:
go test -bench=nameOfYourBenchmark -run=^a
这将导致仅运行以a
开头的测试。并且因为每个测试都应该命名为Test<something>
,所以不会运行任何测试。
仅运行基准测试:
go test -bench=. -run=^a
答案 2 :(得分:0)
仅测试 TestFuncOne
$>> go test -run TestFuncOne
stuff_to_test.go
TestFuncOne() {
}
TestFuncTwo() {
}