在我的 Go 包中有几个基准文件,例如map1_benchmark_test.go
和map2_benchmark_test.go
. 在每个*_benchmark_test.go
文件中,都有多个基准函数,例如func BenchmarkMapTravel(b *testing.B)
and func BenchmarkMapGet(b *testing.B)
。
问题是,我怎样才能只测试一个基准函数?
我试图阅读一些手册,但通过运行go help test
.
在我的 Go 包中有几个基准文件,例如map1_benchmark_test.go
和map2_benchmark_test.go
. 在每个*_benchmark_test.go
文件中,都有多个基准函数,例如func BenchmarkMapTravel(b *testing.B)
and func BenchmarkMapGet(b *testing.B)
。
问题是,我怎样才能只测试一个基准函数?
我试图阅读一些手册,但通过运行go help test
.
-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=^$
您无法提供任何标志,它将仅运行基准测试(或仅运行一个基准测试)。与这些相关的唯一标志是:
-bench regexp 运行与正则表达式匹配的基准。默认情况下,不运行任何基准测试。要运行所有基准测试,请使用“-bench”。或“-bench=.”。
-run regexp 只运行那些匹配正则表达式的测试和示例。
因此,如果您只想运行一个基准测试,您可以这样做:
go test -bench=nameOfYourBenchmark -run=^a
这将导致仅运行以a
. 而且因为每个测试都应该命名为Test<something>
,所以不会有要运行的测试。
仅运行基准测试:
go test -bench=. -run=^a
仅测试TestFuncOne
$>> go test -run TestFuncOne
stuff_to_test.go
TestFuncOne() {
}
TestFuncTwo() {
}