亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何輕松找出哪些測試失敗

如何輕松找出哪些測試失敗

Go
楊__羊羊 2023-06-12 15:29:17
我用go test ./... -v -short.不幸的是,-v它只打印出每個測試,但不會像 Java 那樣在底部留下結果摘要。這意味著如果頂部某處有任何測試失敗,我必須向上滾動并查找該詞FAIL或在文本編輯器中搜索它。該-failfast標志也無濟于事,因為出于某種原因,我的一些測試在第一次測試失敗后仍會打印出來。我真的不在乎測試是否在初始測試失敗后運行。我只想能夠輕松判斷是否有任何測試失敗,最好只在一個地方(例如,有多少測試通過或失敗的摘要,或者通過查看所有測試是否通過的標志)。有沒有一種方法可以輕松判斷是否存在測試失敗,因為如果我仍然有測試失敗,我不想不小心繼續編碼。我在 Windows 10 64 位上。后來我意識到我還想看到錯誤描述以及測試失敗,但不想運行go test兩次。這是我為 CMD 想出的(不適用于 Powershell):go?test?./...?-v?-short?>?test-results.txt?&?findstr?"FAIL?_test"?test-results.txt現在findstr應該報告測試失敗以及錯誤描述。如果您想查看完整的測試結果,只需打開test-results.txt.
查看完整描述

4 回答

?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

FAIL失敗的測試在輸出中用指示。所以你所要做的就是過濾那個詞的輸出。

在 Unix 系統上:

go test ./... |grep FAIL

在 Windows 上:

go test ./... |findstr FAIL

請注意,這是純文本處理,它對 go 測試及其結果一無所知。FAIL這意味著即使測試成功,如果測試輸出該詞,您也可能會得到“誤報” 。但實際上,這幾乎可以完成您想要的工作。

實現此目的的一種更復雜、更準確的方法是將-json標志傳遞給go test,因此它會生成 JSON 輸出,您可以使用程序(例如,用 Go 本身編寫)對其進行處理。失敗的測試用具有字段的 JSON 對象指示"Action":"fail",例如

{"Time":"2019-03-01T12:06:21.108544405+01:00","Action":"fail", "Package":"some/package","Test":"TestSomething","Elapsed":0.01}

即使您不想為此編寫程序,過濾 JSON 輸出也會減少誤報的可能性(過濾"Action":"fail"):

Unix:

go test ./... -json |grep '"Action":"fail"'

視窗:

go test ./... -json |findstr /C:"\"Action\":\"fail\""


查看完整回答
反對 回復 2023-06-12
?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

我發現安裝gotestsum并在最后得到簡潔的摘要是很輕松的。

go?install?gotest.tools/gotestsum@latest
gotestsum?--format?testname?#?Or?dots

如果您只關心計數,另一種方法

go?test?|grep?FAIL?|wc?-l


查看完整回答
反對 回復 2023-06-12
?
達令說

TA貢獻1821條經驗 獲得超6個贊

-json帶有標志的更結構化的方法jq可以列出所有失敗的測試,如下所示:

go test | jq -r 'select(.Action == "fail") | select(.Test | . != null) | .Test'
  • 選擇操作失敗的地方

  • 僅為單個測試選擇輸出并過濾那些沒有測試密鑰的輸出

  • 選擇測試名稱


查看完整回答
反對 回復 2023-06-12
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

這對我有用:

go test | grep -B 1 -A 11 "Error Trace"


查看完整回答
反對 回復 2023-06-12
  • 4 回答
  • 0 關注
  • 233 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號