當我運行此測試但失敗時: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條經(jīng)驗 獲得超7個贊
子測試或子基準的全名是一個以斜杠分隔的名稱及其所有父級名稱的列表,從頂級開始。該名稱是頂級測試和基準測試的相應函數(shù)名稱,否則是 Run 的第一個參數(shù)。為了避免顯示和解析問題,通過用下劃線替換空格并轉(zhuǎn)義不可打印的字符來清理名稱。相同的清理應用于傳遞給 -run 或 -bench 標志的正則表達式。
一些示例可能是使自動化工具更簡單地處理測試輸出,避免 shell 使包含空格的正則表達式參數(shù)顯示為多個參數(shù)等問題。我寧愿避免使用空格也不愿處理這種神奇的重命名。
尚方寶劍之說
TA貢獻1788條經(jīng)驗 獲得超4個贊
當然,我在代碼本身中找到了我能找到的最明確的答案。函數(shù)rewrite注釋如下
rewrite 將子名稱重寫為只有可打印字符且沒有空格。
至于為什么?
至于為什么,也許是因為在cli中引用不帶空格的名稱更容易?
空格對 cli 不利。
- 2 回答
- 0 關(guān)注
- 180 瀏覽
添加回答
舉報
0/150
提交
取消
