當終端/控制檯測試運行時,我喜歡它實際上以紅色或綠色文本顯示它們的輸出。 Go似乎有很多可用的測試庫。不過,我想只使用Go附帶的默認測試包。有沒有辦法使用紅色和綠色對輸出進行着色?着色golang測試運行輸出
回答
您可以爲此創建包裝器外殼腳本,並使用顏色轉義序列爲其着色。下面是在Linux上一個簡單的例子(我不知道這將如何看待窗口,但我想有一種方法.. :))
go test -v . | sed ''/PASS/s//$(printf "\033[32mPASS\033[0m")/'' | sed ''/FAIL/s//$(printf "\033[31mFAIL\033[0m")/''
你仍然需要一個庫添色換碼,如:
- 對於Windows:
mattn/go-colorable
或shiena/ansicolor
- 在Unix或Windows:
fatih/color
或kortschak/ct
- 在Unix或Windows:
logrusorgru/aurora
(通過Ivan Black提及the comments)
從那裏,指定要着色的內容(StdOut或StdErr,如in this example)
目前'kortschak/ct'不支持Windows。 – 2015-09-22 16:17:41
對於Unix和Win10 +,還有[github.com/logrusorgru/aurora](https://github.com/logrusorgru/aurora),它支持Printf/Sprintf格式。例如'fmt.Printf(「value%d」,Red(3))' – 2016-11-07 00:31:35
@IvanBlack謝謝你。我已將您的鏈接添加到答案以獲得更多的可見性。 – VonC 2016-11-07 09:35:21
BoltDB有一些看起來像這樣的測試方法:
func assert(tb testing.TB, condition bool, msg string, v ...interface{}) {
if !condition {
_, file, line, _ := runtime.Caller(1)
fmt.Printf("\033[31m%s:%d: "+msg+"\033[39m\n\n", append([]interface{}{filepath.Base(file), line}, v...)...)
tb.FailNow()
}
}
Here are the rest。我加了綠點here。
您可以使用通用着色器grc來着色任何東西。在Debian/Ubuntu上安裝apt-get install grc
。在Mac上,brew install grc
。
在你的home目錄創建一個config目錄:
mkdir ~/.grc
然後在~/.grc/grc.conf
創建個人GRC配置:
# Go
\bgo.* test\b
conf.gotest
在~/.grc/conf.gotest
然後創建一個圍棋測試colourization配置,如:
regexp==== RUN .*
colour=blue
-
regexp=--- PASS: .*
colour=green
-
regexp=^PASS$
colour=green
-
regexp=^(ok|\?) .*
colour=magenta
-
regexp=--- FAIL: .*
colour=red
-
regexp=[^\s]+\.go(:\d+)?
colour=cyan
現在你可以運行Go與測試:
grc go test -v ./..
輸出示例:
爲了避免鍵入grc
所有的時間,添加一個別名到你的shell(如果使用bash,無論是~/.bashrc
或~/.bash_profile
或兩者兼而有之,這取決於您的操作系統):
alias go=grc go
現在,您只需通過運行得到colourization:
go test -v ./..
還有一個叫richgo的工具,正是這一點,在一個用戶友好的方式。
- 1. 着色PyLint輸出?
- 2. 着色ifort輸出
- 3. 在heroku上運行golang測試
- 4. 着色/高亮導軌3'耙測試'輸出
- 5. 在Golang測試Elasticsearch睡不着覺
- 6. 輸出測試類運行JUnit
- 7. 你怎麼測試golang命令行輸出
- 8. 在ReSharper測試運行器上顯示測試輸出合格
- 9. 運行GWT 2.4測試隨着JUnitCore
- 10. 如何在運行時着色shell輸出
- 11. Java:Windows中的着色輸出
- 12. 業力不運行我的腳本測試沿着JavaScript測試
- 13. 如何並行運行測試,但得到整齊有序的測試輸出?
- 14. 測試着色器的兼容性
- 15. Golang測試函數
- 16. 嘗試運行JUnit測試運行器時出錯
- 17. 功能Git別名輸出着色
- 18. Unity5 - 着色器流輸出階段
- 19. Django在runserver.py中着色輸出
- 20. 如何爲NAnt輸出着色?
- 21. 片段着色:輸出變量
- 22. 片段着色器輸出值
- 23. HLSL幾何着色器空輸出
- 24. 在窗口着色控制檯輸出
- 25. dcraw的輸出有棋盤着色
- 26. 測試臺輸出
- 27. 測試輸入\輸出
- 28. Django鼻子 - 在運行測試時需要捕獲輸出
- 29. IntelliJ IDEA,測試運行器窗格,最大化輸出窗格
- 30. java.lang.NumberFormatException:對於輸入字符串:「」(運行sbt測試時出錯)
這是一個很好的輕量級解決方案。我沒有想到只是將輸出管道輸送到sed。有用。謝謝。 – 2014-12-02 22:33:12
謝謝!我添加了-cover參數並將其添加爲別名。所以每次我想運行所有的測試,我只是運行'got' – IvRRimUm 2016-12-14 18:33:14