it-swarm.com.de

Wie teste ich nur eine Benchmark-Funktion?

In meinem Go-Paket gibt es verschiedene Benchmark-Dateien wie map1_benchmark_test.go und map2_benchmark_test.go. In jeder *_benchmark_test.go-Datei gibt es mehr als eine Benchmark-Funktion wie func BenchmarkMapTravel(b *testing.B) und func BenchmarkMapGet(b *testing.B).

Die Frage ist, wie kann ich nur eine Benchmark-Funktion testen?

Ich habe versucht, einige Handbücher zu lesen, und habe durch Ausführen von go help test nichts über Benchmark herausgefunden.

28
hardPass

Beschreibung der Testflags

-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.

Der Einfachheit halber ist jedes dieser -test.X-Flags der Test-Binärdatei Auch als Flag -X in 'go test' selbst verfügbar.

Für Hilfe,

$ go help testflag

Zum Beispiel,

go test -test.bench MapTravel
go test -test.bench MapGet

oder

go test -bench MapTravel
go test -bench MapGet

Um Testfunktionen zu umgehen, fügen Sie ein -test.run-Muster hinzu, das jeden einzelnen Test herausfiltert. Zum Beispiel,

go test -test.bench MapTravel -test.run=thisexpressionwontmatchanytest

oder

go test -bench MapTravel -run=^$
52
peterSO

Sie können kein Flag angeben, das nur Benchmarks (oder nur einen Benchmark) ausführt. Die nur Flags zu diesen gehören:

-bench regexp Benchmarks ausführen, die dem regulären Ausdruck entsprechen. Standardmäßig werden keine Benchmarks ausgeführt. Um alle Benchmarks auszuführen, verwenden Sie "-Bench". oder '-bench =.'.

-run regexp Führt nur die Tests und Beispiele aus, die dem regulären Ausdruck entsprechen.

Wenn Sie also nur einen Benchmark ausführen möchten, können Sie Folgendes tun:

go test -bench=nameOfYourBenchmark -run=^a

Dadurch werden nur Tests ausgeführt, die mit a beginnen. Da jeder Test Test<something> heißen soll, gibt es keine Tests zum Ausführen.

Nur Benchmarks ausführen:

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

Nur Test TestFuncOne

$>> go test -run TestFuncOne

stuff_to_test.go

TestFuncOne() {
}

TestFuncTwo() {
}
0
robert king