




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Go語言特有函數(shù)defer語句Test功能測(cè)試函數(shù)01.02.目錄01defer語句defer語句定義defer使用環(huán)境Go語言的defer語句會(huì)將其后面跟隨的語句進(jìn)行延遲處理在defer歸屬的函數(shù)即將返回時(shí),將延遲處理的語句按defer的逆序進(jìn)行執(zhí)行即先被defer的語句最后被執(zhí)行,最后被defer的語句最先被執(zhí)行因?yàn)閐efer語句是在當(dāng)前函數(shù)即將返回時(shí)被調(diào)用,所以defer常常被用來釋放資源defer語句1defer語句defer任意語句語法格式1defer語句packagemainimport"fmt"funcmain(){fmt.Println("deferbegin")deferfmt.Println(1)deferfmt.Println(2)deferfmt.Println(3)fmt.Println("deferend")}當(dāng)有多個(gè)defer行為被注冊(cè)時(shí),它們會(huì)以逆序執(zhí)行(類似于棧:后進(jìn)先出)延遲調(diào)用是在defer所在函數(shù)結(jié)束時(shí)進(jìn)行運(yùn)行結(jié)果為:deferbegindeferend321在日常工作中處理業(yè)務(wù)或邏輯中涉及成對(duì)的操作是一件比較煩瑣的事情,比如打開和關(guān)閉文件、接收請(qǐng)求和回復(fù)請(qǐng)求、加鎖和解鎖等在這些操作中,最容易忽略的就是在每個(gè)函數(shù)退出處正確地釋放和關(guān)閉資源而defer語句正好是在函數(shù)退出時(shí)執(zhí)行的語句,所以使用defer能非常方便地處理資源釋放問題。1defer語句defer的資源釋放02Test功能測(cè)試函數(shù)單元測(cè)試性能測(cè)試覆蓋率測(cè)試編寫測(cè)試用例注意事項(xiàng)常用測(cè)試參數(shù)完善的測(cè)試體系能夠提高開發(fā)的效率當(dāng)項(xiàng)目復(fù)雜的時(shí)候,想要保證盡可能的減少bug,有兩種有效的方式分別是代碼審核和測(cè)試Go語言中提供了testing包來實(shí)現(xiàn)單元測(cè)試功能,可以進(jìn)行自動(dòng)化的單元測(cè)試,輸出結(jié)果驗(yàn)證,并且可以測(cè)試性能測(cè)試的意義testing包的三種測(cè)試單元(功能)測(cè)試性能(壓力)測(cè)試覆蓋率測(cè)試2Test功能測(cè)試函數(shù)2Test功能測(cè)試函數(shù)測(cè)試用例文件不會(huì)參與正常源碼的編譯,不會(huì)被包含到可執(zhí)行文件中測(cè)試用例的文件名必須以_test.go結(jié)尾需要使用import導(dǎo)入testing包測(cè)試函數(shù)的名稱要以Test或Benchmark開頭,后面可以跟任意字母組成的字符串,但第一個(gè)字母必須大寫,例如TestAbc(),一個(gè)測(cè)試用例文件中可以包含多個(gè)測(cè)試函數(shù)單元測(cè)試則以(t*testing.T)作為參數(shù),性能測(cè)試以(t*testing.B)做為參數(shù)測(cè)試用例文件使用gotest命令來執(zhí)行,源碼中不需要main()函數(shù)作為入口,所有以_test.go結(jié)尾的源碼文件內(nèi)以Test開頭的函數(shù)都會(huì)自動(dòng)執(zhí)行測(cè)試規(guī)則gotest命令會(huì)自動(dòng)讀取源碼目錄下面名為*_test.go的文件,生成并運(yùn)行測(cè)試用的可執(zhí)行文件語法格式gotest[-c][-i][buildflags][packages][flagsfortestbinary]-c:編譯gotest成為可執(zhí)行的二進(jìn)制文件,但是不運(yùn)行測(cè)試-i:安裝測(cè)試包依賴的package,但是不運(yùn)行測(cè)試buildflags:調(diào)用gohelpbuild,這些是編譯運(yùn)行過程中需要使用到的參數(shù),一般設(shè)置為空packages:調(diào)用gohelppackages,這些是關(guān)于包的管理,一般設(shè)置為空flagsfortestbinary:調(diào)用gohelptestflag,這些是gotest過程中經(jīng)常使用到的參數(shù)2Test功能測(cè)試函數(shù)2Test功能測(cè)試函數(shù)單元就是人為規(guī)定的最小的被測(cè)功能模塊作用:對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證單元測(cè)試是在軟件開發(fā)過程中要進(jìn)行的最低級(jí)別的測(cè)試活動(dòng)軟件的獨(dú)立單元將在與程序的其他部分相隔離的情況下進(jìn)行測(cè)試單元(功能)測(cè)試import"testing"funcTestXxx(t*testing.T){//......}測(cè)試語法E:\go\demo\demo.go文件:packagedemofuncGetArea(weightint,heightint)int{returnweight*height}E:\go\demo\demo_test.go文件:packagedemoimport"testing"funcTestGetArea(t*testing.T){ area:=GetArea(40,50) ifarea!=2000{ t.Error("測(cè)試失敗") }}測(cè)試結(jié)果為:E:\go\demo>gotest-v===RUNTestGetArea---PASS:TestGetArea(0.00s)PASSokgin/demo0.810s2Test功能測(cè)試函數(shù)2Test功能測(cè)試函數(shù)性能測(cè)試是指:可以給出代碼的性能數(shù)據(jù),幫助測(cè)試者分析性能問題性能測(cè)試也稱基準(zhǔn)測(cè)試,基準(zhǔn)測(cè)試可以測(cè)試一段程序的運(yùn)行性能及耗費(fèi)CPU的程度Go語言中提供了基準(zhǔn)測(cè)試框架,使用方法類似于單元測(cè)試使用者無須準(zhǔn)備高精度的計(jì)時(shí)器和各種分析工具,因?yàn)榛鶞?zhǔn)測(cè)試本身即可以打印出非常標(biāo)準(zhǔn)的測(cè)試報(bào)告性能(壓力)測(cè)試E:\go\demo\demo.go文件:packagedemofuncGetArea(weightint,heightint)int{returnweight*height}packagedemoimport"testing"funcBenchmarkGetArea(t*testing.B){ fori:=0;i<t.N;i++{ GetArea(40,50) }}測(cè)試結(jié)果為:E:\go\demo>gotest-bench="."goos:windowsgoarch:amd64pkg:gin/democpu:Intel(R)Core(TM)i5-8300HCPU@2.30GHzBenchmarkGetArea-810000000000.2634ns/opPASSokgin/demo1.163s2Test功能測(cè)試函數(shù)2Test功能測(cè)試函數(shù)能知道測(cè)試程序總共覆蓋了多少業(yè)務(wù)代碼即是demo_test.go中測(cè)試了多少demo.go中的代碼最好的情況是覆蓋測(cè)試結(jié)果為100%覆蓋率測(cè)試E:\go\demo\demo.go文件:packagedemofuncGetArea(weightint,heightint)int{returnweight*height}packagedemoimport"testing"funcTestGetArea(t*testing.T){ area:=GetArea(40,50) ifarea!=2000{ t.Error("測(cè)試失敗") }}funcBenchmarkGetArea(t*testing.B){
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 印刷服務(wù)合同
- 手破碎機(jī)設(shè)備買賣合同
- 聘用出納合同增加多場(chǎng)景
- 生產(chǎn)車間承包合同協(xié)議
- 機(jī)械工程勞務(wù)分包合同
- 河北化工醫(yī)藥職業(yè)技術(shù)學(xué)院《中學(xué)生物課堂教學(xué)技能訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州華立科技職業(yè)學(xué)院《數(shù)據(jù)挖掘與決策管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 寧波衛(wèi)生職業(yè)技術(shù)學(xué)院《界面化學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 宜春學(xué)院《需求工程》2023-2024學(xué)年第二學(xué)期期末試卷
- 宿州職業(yè)技術(shù)學(xué)院《水質(zhì)工程學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 蘋果樹病蟲害防治
- 中國空白地圖(打印)
- 成品半成品倉庫管理制度
- 《產(chǎn)品設(shè)計(jì)》(北希望)教學(xué)資料 課程標(biāo)準(zhǔn) 產(chǎn)品設(shè)計(jì)課程標(biāo)準(zhǔn)
- 部編版語文四年級(jí)下冊(cè)第7單元核心素養(yǎng)教案
- 幼兒園垃圾分類PPT
- 申請(qǐng)?zhí)崛∽》抗e金個(gè)人授權(quán)、承諾書(樣表)
- 施工作業(yè)申請(qǐng)表
- 浸出液的凈化與沉積
- 銀行間本幣市場(chǎng)交易員資格考試真題模擬匯編(共586題)
- 苯乙酸安全技術(shù)說明書(msds)
評(píng)論
0/150
提交評(píng)論