私のGoパッケージには、_map1_benchmark_test.go
_や_map2_benchmark_test.go
_などのいくつかのベンチマークファイルがあります。すべての_*_benchmark_test.go
_ファイルには、func BenchmarkMapTravel(b *testing.B)
やfunc BenchmarkMapGet(b *testing.B)
などの複数のベンチマーク関数があります。
問題は、どのようにして1つのベンチマーク関数だけをテストできるかということです。
いくつかのマニュアルを読もうとしたが、_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=^$
提供できるフラグはなく、ベンチマークのみ(または1つのベンチマークのみ)を実行します。 これらに関連するフラグのみ は次のとおりです。
-bench regexp正規表現に一致するベンチマークを実行します。デフォルトでは、ベンチマークは実行されません。すべてのベンチマークを実行するには、「-bench」を使用します。または「-bench =。」。
-run regexp正規表現に一致するテストと例のみを実行します。
したがって、1つのベンチマークのみを実行したい場合は、次のようにすることができます。
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() {
}