如何只测试一个基准函数?

时间:2013-04-23 04:46:12

标签: unit-testing go benchmarking

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

问题是,我如何只测试一个基准函数?

我尝试阅读一些手册,并通过运行go help test来获得基准测试。

3 个答案:

答案 0 :(得分:53)

  

Description of testing flags

-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 :(得分:2)

您无法提供任何标志,只会运行基准测试(或仅运行一个基准测试)。这些only flags related是:

  

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

     

-run regexp       仅运行与常规匹配的测试和示例       表达

因此,如果您只想运行一个基准测试,则可以执行此操作:

go test -bench=nameOfYourBenchmark -run=^a

这将导致仅运行以a开头的测试。并且因为每个测试都应该命名为Test<something>,所以不会运行任何测试。

仅运行基准测试:

go test -bench=. -run=^a

答案 2 :(得分:0)

仅测试 TestFuncOne

$>> go test -run TestFuncOne
  

stuff_to_test.go

TestFuncOne() {
}

TestFuncTwo() {
}