我无法追踪我所知道的位置,但通常如果为方法Foo
编写测试,则相应的测试名为TestFoo
。
如果测试一个未导出的函数,比如说foo
,那么测试的名称应该是什么?
我的问题来自于JetBrains IDE for Go,当被要求为未导出的函数生成测试时,会产生类似Test_foo
的内容。
这种行为可能有意义,因为如果您在同一个程序包中有Foo
及其未导出的反对派foo
,那么您希望以某种方式对它们进行不同的测试(在至少
在未导出的函数之后是否有关于命名测试的约定?
顺便说一句: Go testing包的文档说,如果是,则执行测试:
表单的任何功能
func TestXxx(*testing.T)
其中Xxx可以是任何字母数字字符串(但第一个字母不得在[a-z]中)并用于标识测试例程。
这意味着,名称中有下划线的任何测试都不应由go test
执行。但是,我们都知道,这样的测试工作正常。
答案 0 :(得分:0)
我最初的混淆源于两件事:
1)假设,在测试函数名称中允许使用下划线。这个假设得到了大量开展这项工作的主要开源项目的支持
2)事实上,JetBrains Idea使用包含下划线的名称生成测试
对我自己的问题的回答:有一个约定(我宁愿说,这是谷歌的指南),很多项目都违反了这个约定。不应在测试名称中使用下划线。
我投票支持关闭我自己的问题,并在JetBrains bugtracker中创建了一个错误报告。 https://youtrack.jetbrains.com/issue/GO-5185