軟件開發(fā)離不開軟件測試观话,測試是程序質(zhì)量的有力保障,也是程序開發(fā)者的有力輔助工具。當我們添加或者更新了新的功能是察纯,通過測試單元我們能清楚的了解到程序功能是否正常、性能是否提高等针肥。
Go語言作為一門先進的現(xiàn)代計算機編程語言饼记,為程序測試提供了很多開箱即用的工具。Go語言在標準準庫中提供了一個專門用于測試的代碼包testing祖驱。這個代碼包提供了編寫代碼測試源碼文件的一切握恳。使用go test命令便可執(zhí)行測試源碼文件的測試程序。
一功能測試
測試員嗎文件總應該與被它測試的源碼文件廚藝同一個代碼包內(nèi)捺僻。我們在編寫測試源碼文件總是會用到標準庫代碼包testing的API乡洼。testing包維Go語言的代碼包提供自動化測試支持。它與go test命令協(xié)同使用自動執(zhí)行目標代碼包中的任何測試函數(shù)匕坯。
1.1編寫測試函數(shù)
在測試源碼文件中束昵,針對測試目標源碼文件的功能測試總是以函數(shù)為單位。被用于測試的函數(shù)的名稱和簽名形如:
func TestXxx(t *testing.T)
通常把Xxx替換成被測試的函數(shù)名稱葛峻。我們可以利用*testing.T類型的參數(shù)t上的一些方法對功能測試的過程進行記錄和控制锹雏。
- 常規(guī)記錄
參數(shù) t 上的Log和Logf方法一般用于記錄一些常規(guī)信息,以展示測試程序的運行過程以及被測試程序的實時狀態(tài)术奖。t.Log和t.Logf分別與fmt.Println和fmt.Printf函數(shù)的使用方法類似礁遵。 - 錯誤記錄
參數(shù)t上的Error和ErrorF方法被用于錯誤記錄轻绞。當被測試程序的狀態(tài)不正確時,調(diào)用t.Error或者t.Errorf方法佣耐,及時記錄當前的錯誤狀態(tài)政勃。調(diào)用t.Error相當于先后調(diào)用了t.Log和t.Fial方法,而調(diào)用t.Errorf則相當于先后調(diào)用了t.LogF和t.Fial方法兼砖。 - 致命錯誤記錄
參數(shù)t上的Fatal和Fatalf方法被用于記錄被測試程序的致命錯誤狀態(tài)( 使得測序程序無法繼續(xù)運行的錯誤 )奸远。調(diào)用t.Fatal相當于先后調(diào)用了t.Log和t.FialNow方法,而調(diào)用t.Errorf則相當于先后調(diào)用了t.FatalF和t.FialNow方法讽挟。 - 失敗標記
參數(shù)上的Fail方法被用于標記當前測試函數(shù)中的測試是失敗的懒叛。對t.Fail方法的調(diào)用不會終止當前測試函數(shù)的執(zhí)行。當時耽梅,此函數(shù)的測試結果已經(jīng)被標記為失敗了薛窥。 - 立即失敗標記
方法t.FailNow用于標記當前測試函數(shù)的測試是失敗的,并立即終止當前測試函數(shù)的執(zhí)行眼姐。 - 失敗判斷
t.Failed方法用于獲得當前測試函數(shù)中的測試是否已經(jīng)被標記為失敗拆檬。 - 忽略測試
調(diào)用t.SkipNow的方法用于標記當前測試函數(shù)為已經(jīng)被忽略的并且立即終止該函數(shù)的執(zhí)行。
1.2功能測試的額運行
Go語言提供了專門用于程序測試命令--
go test
命令妥凳。
執(zhí)行go test
的三種方式:
-
go test testPackage
命令后面跟被測試代碼包竟贯。 -
go test xxx_test.go xx.go
命令后面跟測試源碼文件及其測試的源碼文件,用于執(zhí)行代碼包中的部分測試逝钥。 -
go test -run=Regxp testPackage
使用標記-run ,-run標記的值為一個正則表達式屑那,與正則表達式匹配的功能測函數(shù),才會在此次的測試過程中被執(zhí)行艘款。