gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:23:46 24 4
gpt4 key购买 nike

我无法追溯我是从哪里知道的,但通常情况下,如果有人为方法 Foo 编写测试,则相应的测试名为 TestFoo

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

我的问题来自这样一个事实,当要求为未导出的函数生成测试时,JetBrains IDE for Go 会生成类似 Test_foo 的内容。

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

那么在未导出的函数之后命名测试有什么约定吗?

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

any function of the form

func TestXxx(*testing.T)

where Xxx can be any alphanumeric string (but the first letter must not be in [a-z]) and serves to identify the test routine.

这意味着,任何名称中包含下划线的测试都不应该被 go test 执行。然而,我们都知道,这样的测试效果很好。

最佳答案

我最初对此感到困惑的原因有两点:

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

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

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

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

关于testing - 测试 Go 中未导出函数的命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48028617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com