测试Go中未导出函数的命名约定

问题描述 投票:0回答:1

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

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

我的问题来自于JetBrains IDE for Go,当被要求为未导出的函数生成测试时,生成像Test_foo这样的东西。

这种行为可能有意义,因为如果你在同一个包中有Foo并且它是未导出的counterpat foo,你会想要以某种方式对它们进行不同的测试(至少在IDE中跳转到测试功能)。

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

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

表格的任何功能

func TestXxx(*testing.T)

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

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

testing go naming-conventions
1个回答
0
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.