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

时间:2016-04-29 12:36:23

标签: go

使用go test -v pattern我可以选择并仅运行与模式匹配的测试,但有没有办法可以列出所有测试用例而不运行它们。有这种情况,刚交给我的项目有很多测试用例,我需要选择一些测试来运行。我知道greping来源xxx_test.go是一种方式,但有更优雅的方式吗?我的意思是,每个测试都将其元数据存储在某些地方,对吧?因为测试需要在特定签名中(func TestXXX(*testing.T))。这个元数据可以用来做这种工作。

3 个答案:

答案 0 :(得分:3)

刚刚在Go1.9发行说明(草稿)中看到了this,我认为可能就是你要找的东西

  

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

答案 1 :(得分:2)

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

如果您有ack,则可以轻松使用以下内容:

➜ ack 'func Test[^(]+'

答案 2 :(得分:1)

如果您不使用ack作为另一个答案,则可以简单地使用grep -r "func Test" . | wc -l。之所以有效,是因为

  • 子字符串func Test的grep,其中应包括每个测试功能(还包括TestMain
  • 标志-r告诉grep递归查找子目录
  • wc -l将计算管道中连接的行数,这应该是测试用例的数量