我无法跟踪从哪里知道它,但是通常情况下,如果为方法Foo编写测试,则相应的测试名为TestFoo。
如果测试一个未导出的函数,比如foo,那么测试的名称应该是什么?
我的问题来自这样一个事实,即Go的JetBrains IDE在被要求为未导出的函数生成测试时,会生成类似于Test_foo的内容。
这种行为可能是有意义的,因为如果您有Foo,并且它是在同一个包中的未导出的反may foo,那么您可能希望以某种方式对它们进行不同的测试(至少是为了在IDE中跳到测试特性)。
那么,在未导出的函数之后命名测试有什么约定吗?
顺便说一句: Go 测试包的文档说,如果是这样的话,就会执行测试:
表格的任何功能
func TestXxx(*testing.T)其中Xxx可以是任何字母数字字符串(但第一个字母不能在and中),用于标识测试例程。
这意味着,任何具有下划线的测试都不应该由go test执行。然而,我们都知道,这样的测试工作正常。
发布于 2018-01-01 21:44:04
我最初对此感到困惑的原因有两点:
1)在测试函数名中允许下划线的假设。这一假设得到了大量大型开源项目的支持。
2)事实上,JetBrains Idea生成包含下划线的名称的测试
对我自己的问题的回答是:有一种惯例(我更愿意说,这是Google的指导方针),许多项目都违反了这一原则。不应在测试名称中使用下划线。
我投票赞成结束我自己的问题,并在JetBrains bug跟踪器中创建了一个错误报告。https://youtrack.jetbrains.com/issue/GO-5185
https://stackoverflow.com/questions/48028617
复制相似问题