为了账号安全,请及时绑定邮箱和手机立即绑定

为什么golang测试包在报告测试失败时用下划线替换空格?

为什么golang测试包在报告测试失败时用下划线替换空格?

Go
RISEBY 2023-04-04 17:21:43
当我运行此测试但失败时:func TestCaseA(t *testing.T){    t.Run("my name with spaces", func (t *testing.T){        t.Error("some error message")    })}然后在输出中修改测试的名称(空格更改为下划线):--- FAIL: TestCaseA (0.00s)    --- FAIL: TestCaseA/my_name_with_spaces (0.00s)        main.go:10: some error messageFAIL为什么要这样做?这是一个工作示例:https ://play.golang.org/p/viZjC60Dazg
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

子测试或子基准的全名是一个以斜杠分隔的名称及其所有父级名称的列表,从顶级开始。该名称是顶级测试和基准测试的相应函数名称,否则是 Run 的第一个参数。为了避免显示和解析问题,通过用下划线替换空格并转义不可打印的字符来清理名称。相同的清理应用于传递给 -run 或 -bench 标志的正则表达式。

一些示例可能是使自动化工具更简单地处理测试输出,避免 shell 使包含空格的正则表达式参数显示为多个参数等问题。我宁愿避免使用空格也不愿处理这种神奇的重命名。


查看完整回答
反对 回复 2023-04-04
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

当然,我在代码本身中找到了我能找到的最明确的答案。函数rewrite注释如下

rewrite 将子名称重写为只有可打印字符且没有空格。

至于为什么?

至于为什么,也许是因为在cli中引用不带空格的名称更容易?

空格对 cli 不利。


查看完整回答
反对 回复 2023-04-04
  • 2 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信