当我运行此测试但失败时: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 使包含空格的正则表达式参数显示为多个参数等问题。我宁愿避免使用空格也不愿处理这种神奇的重命名。
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
当然,我在代码本身中找到了我能找到的最明确的答案。函数rewrite
注释如下
rewrite 将子名称重写为只有可打印字符且没有空格。
至于为什么?
至于为什么,也许是因为在cli中引用不带空格的名称更容易?
空格对 cli 不利。
- 2 回答
- 0 关注
- 98 浏览
添加回答
举报
0/150
提交
取消