61396-Go語言程序設(shè)計(jì)項(xiàng)目化教程(微課版)3.4 Go語言特有函數(shù)_第1頁
61396-Go語言程序設(shè)計(jì)項(xiàng)目化教程(微課版)3.4 Go語言特有函數(shù)_第2頁
61396-Go語言程序設(shè)計(jì)項(xiàng)目化教程(微課版)3.4 Go語言特有函數(shù)_第3頁
61396-Go語言程序設(shè)計(jì)項(xiàng)目化教程(微課版)3.4 Go語言特有函數(shù)_第4頁
61396-Go語言程序設(shè)計(jì)項(xiàng)目化教程(微課版)3.4 Go語言特有函數(shù)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論