《Go程序设计语言》- 第11章:测试
目錄
- 前言
- go test工具
- Test函數
- 覆蓋率
- Benchmark函數
- 性能剖析
- Example函數
前言
本專欄是筆者在學習《Go程序設計語言》這本書時,對每個章節認為較為重要(容易忘記👻)的知識點記錄的筆記,其中也會有少量的思考👀, 現整理成博客分享出來。
如果對專欄感興趣,跑過去看一眼,書中的每一章都有:《Go程序設計語言》筆記
??注意??:本專欄不是詳細的知識講解,只是碎片的知識條目,或可作為Go知識點查漏補缺的小工具~
go test工具
Test函數
每一個測試文件必須導入testing包,且測試函數簽名如下,其中參數t提供了t.Error()方法以匯報測試失敗和日志記錄功能;
func TestName(t *testing.T){}測試函數名必須以大寫開頭,如TestmyFunc是錯誤的;
go test -v可以報告每個測試的耗時;
可以使用基于表的測試用例:
var tests = []struct{input stringres bool }{{"ok input", true},{"error input", false} }測試錯誤消息的格式一般是:f(x)=y, want z;
隨機測試:使用函數生成一定格式生成預知結果的隨機輸入;大概率用到math/rand包;
覆蓋率
Benchmark函數
基準測試函數使用如下聲明:
func BenchmarkMyTest(b *testing.B){... }testing.B除了提供錯誤輸出函數之外,還提供b.N獲取被執行的次數;
go test默認不會執行任何基準測試,而需要使用go test -bench=Test來指定函數;
性能剖析
過早優化是萬惡之源;
性能剖析分為很多種:CPU性能剖析、堆性能剖析、阻塞性能剖析;可通過如下語句引入:
go test -cpuprofile cpu.out go test -memprofile mem.out go test -blockprofile block.outExample函數
聲明是沒有參數也沒有返回值:
func ExampleTest(){}主要目的是作為文檔,其次可用于Go Playground,在網頁上編輯和運行每個示例函數;
如有錯誤 ? ,歡迎指正 ??~
如有收獲 🍗,可以考慮點贊👍/評論💬/收藏??/關注👀,大家共同進步~
總結
以上是生活随笔為你收集整理的《Go程序设计语言》- 第11章:测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Go程序设计语言》- 第10章:包和g
- 下一篇: Go程序设计语言pdf