Unit testing 如何只测试一个基准函数?
在我的Go软件包中有几个基准文件,如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对基准测试一无所知 为了方便起见,测试二进制文
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