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