使用“go test”列出所有测试用例

Use "go test" to list all tests case

提问人:fluter 提问时间:4/29/2016 更新时间:7/28/2020 访问量:10811

问:

有了 我可以选择并只运行与模式匹配的测试,但是有没有办法在不运行它们的情况下列出所有测试用例。有这种情况,刚刚交给我的项目有很多测试用例,我需要选择一些测试来运行。我知道对来源进行搜索是一种方式,但有没有更优雅的方法?我的意思是,每个测试都有其元数据存储在某个地方,对吧?因为测试需要在特定的 signature() 中。此元数据可用于完成此类工作。go test -v patternxxx_test.gofunc TestXXX(*testing.T)

评论


答:

3赞 OneOfOne 4/29/2016 #1

没有保存的元数据,grepping 几乎是唯一的方法。

如果你有 ack,你可以很容易地使用这样的东西:

➜ ack 'func Test[^(]+'

评论

0赞 Sergii Getman 2/27/2020
如果您使用TestSuite
17赞 Ignacio Vergara Kausel 6/19/2017 #2

刚刚在 Go1.9 发行说明(草稿)中看到了这一点,我认为这可能是您正在寻找的

go test 命令接受一个新的 -list 标志,该标志采用常规 expression 作为参数并打印到任何测试的名称, 基准测试或与之匹配的示例,而无需运行它们。

评论

3赞 Zephaniah Grunschlag 1/25/2022
为了完整起见,下面是一个示例用法,其中列出了每种情况:go test ./... -list=.
1赞 gastrodon 7/28/2020 #3

如果你不使用另一个答案提到的,你可以简单地.这之所以有效,是因为ackgrep -r "func Test" . | wc -l

  • grep 表示子字符串 ,其中应包括每个测试函数(还包括func TestTestMain)
  • 标志告诉 grep 以递归方式查找子目录-r
  • wc -l将计算通过管道输送到其中的行数,这应该是测试用例的数量