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

Unit testing 如何只测试一个基准函数?,unit-testing,go,benchmarking,Unit Testing,Go,Benchmarking,在我的Go软件包中有几个基准文件,如map1\u benchmark\u test.Go和map2\u benchmark\u test.Go。在每个*\u benchmark\u test.go文件中,都有多个基准函数,如func BenchmarkMapTravel(b*testing.b)和func BenchmarkMapGet(b*testing.b) 问题是,如何只测试一个基准函数 我试图阅读一些手册,但通过运行go-help-test对基准测试一无所知 为了方便起见,测试二进制文

在我的Go软件包中有几个基准文件,如
map1\u benchmark\u test.Go
map2\u benchmark\u test.Go
。在每个
*\u benchmark\u test.go
文件中,都有多个基准函数,如
func BenchmarkMapTravel(b*testing.b)
func BenchmarkMapGet(b*testing.b)

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

我试图阅读一些手册,但通过运行
go-help-test
对基准测试一无所知

为了方便起见,测试二进制文件的每个
-test.X
标志都是 也可用作“
go test
”本身中的标志
-X

为了寻求帮助

$ go help testflag
比如说,

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

要绕过测试功能,请包括一个
-test.run
模式,该模式过滤掉每个测试。比如说,

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


仅测试TestFuncOne

$>> go test -run TestFuncOne
去吧,去吧


您不能提供只运行基准测试(或只运行一个基准测试)的标志。这些措施的主要目的是:

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

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

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

go test -bench=nameOfYourBenchmark -run=^a
这将导致只运行以
a
开头的测试。由于每个测试都应该命名为
test
,因此将不会运行任何测试

要仅运行基准测试,请执行以下操作:

go test -bench=. -run=^a

只有一个基准运行,但其他测试方法,如
func TestMapGet(t*testing.t)
也不是基准运行。那么,如何在没有任何其他测试运行的情况下运行基准测试呢?请注意,您不需要
测试。
前缀在标志中,您只需编写
go-test-bench-MapGet-run XXX
,这样就不会太繁琐了。(从文档中:为了方便起见,测试二进制文件的每个
-test.X
标志也可以作为
go-test
本身中的
-X
标志使用。)在本机Windows命令行上,请注意
^
是转义字符(如\其他地方)。因此,它需要键入
-run=^^$
,但更简单的是
-run=
(因为等号不是正则表达式的特殊值,也不是任何测试名称的一部分)。
go test -bench=nameOfYourBenchmark -run=^a
go test -bench=. -run=^a