har*_*ass 30 benchmarking unit-testing go
在我的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.
pet*_*rSO 54
Run Code Online (Sandbox Code Playgroud)-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
Run Code Online (Sandbox Code Playgroud)
例如,
go test -test.bench MapTravel
go test -test.bench MapGet
Run Code Online (Sandbox Code Playgroud)
要么
go test -bench MapTravel
go test -bench MapGet
Run Code Online (Sandbox Code Playgroud)
要绕过测试功能,请包含-test.run过滤掉每个测试的模式.例如,
go test -test.bench MapTravel -test.run=thisexpressionwontmatchanytest
Run Code Online (Sandbox Code Playgroud)
要么
go test -bench MapTravel -run=^$
Run Code Online (Sandbox Code Playgroud)
您无法提供仅运行基准测试(或仅运行一个基准测试)的标志。与这些相关的唯一标志是:
-bench regexp 运行与正则表达式匹配的基准测试。默认情况下,不运行任何基准测试。要运行所有基准测试,请使用“-bench”。或“-bench=.”。
-run regexp 仅运行与正则表达式匹配的测试和示例。
因此,如果您只想运行一个基准测试,您可以这样做:
go test -bench=nameOfYourBenchmark -run=^a
Run Code Online (Sandbox Code Playgroud)
这将导致仅运行以 开头的测试a。而且因为每个测试都应该被命名Test<something>,所以不会有任何测试要运行。
仅运行基准测试:
go test -bench=. -run=^a
Run Code Online (Sandbox Code Playgroud)