在Go

时间:2017-12-29 21:25:03

标签: testing go naming-conventions

我无法追踪我所知道的位置,但通常如果为方法Foo编写测试,则相应的测试名为TestFoo

如果测试一个未导出的函数,比如说foo,那么测试的名称应该是什么?

我的问题来自于JetBrains IDE for Go,当被要求为未导出的函数生成测试时,会产生类似Test_foo的内容。

这种行为可能有意义,因为如果您在同一个程序包中有Foo及其未导出的反对派foo,那么您希望以某种方式对它们进行不同的测试(在至少在IDE中跳转到测试功能。)

在未导出的函数之后是否有关于命名测试的约定?

顺便说一句: Go testing包的文档说,如果是,则执行测试:

  

表单的任何功能

     

func TestXxx(*testing.T)

     

其中Xxx可以是任何字母数字字符串(但第一个字母不得在[a-z]中)并用于标识测试例程。

这意味着,名称中有下划线的任何测试都不应由go test执行。但是,我们都知道,这样的测试工作正常。

1 个答案:

答案 0 :(得分:0)

我最初的混淆源于两件事:

1)假设,在测试函数名称中允许使用下划线。这个假设得到了大量开展这项工作的主要开源项目的支持

2)事实上,JetBrains Idea使用包含下划线的名称生成测试

对我自己的问题的回答:有一个约定(我宁愿说,这是谷歌的指南),很多项目都违反了这个约定。不应在测试名称中使用下划线。

我投票支持关闭我自己的问题,并在JetBrains bugtracker中创建了一个错误报告。 https://youtrack.jetbrains.com/issue/GO-5185