web-dev-qa-db-ja.com

ベンチマーク関数を1つだけテストする方法は?

私の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_を実行してもベンチマークについて何も得られなかった。

31
hardPass

テストフラグの説明

-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=^$
53
peterSO

提供できるフラグはなく、ベンチマークのみ(または1つのベンチマークのみ)を実行します。 これらに関連するフラグのみ は次のとおりです。

-bench regexp正規表現に一致するベンチマークを実行します。デフォルトでは、ベンチマークは実行されません。すべてのベンチマークを実行するには、「-bench」を使用します。または「-bench =。」。

-run regexp正規表現に一致するテストと例のみを実行します。

したがって、1つのベンチマークのみを実行したい場合は、次のようにすることができます。

go test -bench=nameOfYourBenchmark -run=^a

これにより、aで始まるテストのみが実行されます。そして、各テストにはTest<something>、実行するテストはありません。

ベンチマークのみを実行するには:

go test -bench=. -run=^a
2
Salvador Dali

テストのみTestFuncOne

$>> go test -run TestFuncOne

stuff_to_test.go

TestFuncOne() {
}

TestFuncTwo() {
}
0
robert king