37

在我的 Go 包中有几个基准文件,例如map1_benchmark_test.gomap2_benchmark_test.go. 在每个*_benchmark_test.go文件中,都有多个基准函数,例如func BenchmarkMapTravel(b *testing.B)and func BenchmarkMapGet(b *testing.B)

问题是,我怎样才能只测试一个基准函数?

我试图阅读一些手册,但通过运行go help test.

4

3 回答 3

65

测试标志说明

-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=^$
于 2013-04-23T05:26:36.073 回答
2

您无法提供任何标志,它将仅运行基准测试(或仅运行一个基准测试)。与这些相关的唯一标志是:

-bench regexp 运行与正则表达式匹配的基准。默认情况下,不运行任何基准测试。要运行所有基准测试,请使用“-bench”。或“-bench=.”。

-run regexp 只运行那些匹配正则表达式的测试和示例。

因此,如果您只想运行一个基准测试,您可以这样做:

go test -bench=nameOfYourBenchmark -run=^a

这将导致仅运行以a. 而且因为每个测试都应该命名为Test<something>,所以不会有要运行的测试。

仅运行基准测试:

go test -bench=. -run=^a
于 2016-02-24T04:09:28.930 回答
0

仅测试TestFuncOne

$>> go test -run TestFuncOne

stuff_to_test.go

TestFuncOne() {
}

TestFuncTwo() {
}
于 2016-01-27T02:32:46.147 回答