




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第一文詳解Go語言單元測試的原理與使用目錄前言為什么要引用單元測試類單元測試基本介紹優(yōu)點(diǎn)Testing規(guī)范基本使用Golang運(yùn)行命令行案例
前言
為什么要引用單元測試類
傳統(tǒng)方法的缺點(diǎn)分析
不方便,我們需要在main函數(shù)中去調(diào)用,這樣就需要去修改main函數(shù),如果現(xiàn)在項(xiàng)目正在運(yùn)行,就可能去停止項(xiàng)目
不利于管理,因?yàn)楫?dāng)我們測試多個(gè)函數(shù)或者多個(gè)模塊時(shí),都需要寫在main函數(shù),不利于我們管理和清晰我們的思路
單元測試基本介紹
Go語言中自帶有一個(gè)輕量級(jí)的測試框架testing和自帶的gotest命令來實(shí)現(xiàn)單元測試和性能測試,testing框架和其他語言中的測試框架類似,可以基于這個(gè)框架寫針對(duì)相應(yīng)函數(shù)的測試用例,也可以基于該框架寫相應(yīng)的壓力測試用例
優(yōu)點(diǎn)
確保每個(gè)函數(shù)是可運(yùn)行,并且運(yùn)行結(jié)果是正確的確保寫出來的代碼性能是好的單元測試能及時(shí)的發(fā)現(xiàn)程序設(shè)計(jì)或?qū)崿F(xiàn)的邏輯錯(cuò)誤,使問題及早暴露,便于問題的定位解決,而性能測試的重點(diǎn)在于發(fā)現(xiàn)程序設(shè)計(jì)的一些問題,讓程序能夠在高并發(fā)的情況下還能保持穩(wěn)定
Testing規(guī)范
1.測試用例文件名必須以_test.go結(jié)尾
2.測試用例函數(shù)必須以Test開頭,一般來說就是Test+被測試的函數(shù)名
3.測試用例函數(shù)的形參類型必須是*testing.T
4.一個(gè)測試用例文件中,可以由多個(gè)測試用例函數(shù)
5.當(dāng)出現(xiàn)錯(cuò)誤使,可以使用t.Fatalf來格式化輸出錯(cuò)誤信息,并退出程序
6.t.Logf方法可以輸出相應(yīng)的日志
7.測試用例函數(shù),并沒有放在main函數(shù)中,但是卻執(zhí)行了main函數(shù)
8.pass表示測試用例運(yùn)行成功,Fail表示測試用例運(yùn)行失敗
9.測試單個(gè)文件,一個(gè)要帶上被測試的源文件
gotest-vcal_test.gocal.go
10.測試單個(gè)方法
gotest-v-test.run函數(shù)名
基本使用
cal.go
packagemain
funcadd(nint)(int){
varsumint
fori:=1;ii++{
sum+=i
returnsum
cal_test.go
packagemain
import"testing"
//函數(shù)名規(guī)范Test+要測試的函數(shù)名(t*testing)
funcTestAdd(t*testing.T){
res:=add(9)
if(res!=55){
t.Fatalf("add(10)執(zhí)行錯(cuò)誤,期望值=%v實(shí)際值=%v\n",55,res)
t.Logf("執(zhí)行正確!!")
Golang運(yùn)行
命令行
案例
monster.go
packagemonster
import(
"encoding/json"
"fmt"
"io/ioutil"
typeMonsterstruct{
Namestring
Ageint
Skillstring
func(this*Monster)Store()bool{
data,err:=json.Marshal(this)
iferr!=nil{
fmt.Println("err=",err)
returnfalse
filename:="f:/test.ser"
err2:=ioutil.WriteFile(filename,data,0666)
iferr2!=nil{
fmt.Println("err=",err2)
returnfalse
returntrue
func(this*Monster)ReStore()bool{
filename:="f:/test.ser"
reader,err2:=ioutil.ReadFile(filename)
iferr2!=nil{
fmt.Println("err=",err2)
returnfalse
err:=json.Unmarshal(reader,this)
iferr!=nil{
fmt.Println("err=",err)
returnfalse
returntrue
}
monster_test.go
packagemonster
import(
"fmt"
"testing"
funcTestStore(t*testing.T){
monster:=Monster{
Name:"張三",
Age:18,
Skill:"打游戲",
flag:=monster.Store()
if!flag{
t.Fatalf("monster.Store()錯(cuò)誤,期望為%v,實(shí)際為%v",true,flag)
t.Logf("monster.Store()測試成功")
funcTestRestore(t*testing.T){
varmonster=Monster{}
flag:=monster.ReStore()
if!flag{
t.Fatal
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 國際商標(biāo)續(xù)展與全球商標(biāo)運(yùn)營及知識(shí)產(chǎn)權(quán)布局與運(yùn)營代理合同
- 網(wǎng)貸逾期債務(wù)共管及處置合作協(xié)議
- 孩子監(jiān)護(hù)權(quán)變更及探視安排合同
- 微信小程序電商運(yùn)營專業(yè)培訓(xùn)與項(xiàng)目實(shí)施合同
- 抖音短視頻助力鄉(xiāng)村文化振興合作協(xié)議
- 國際婚姻忠誠協(xié)議與國際私法適用服務(wù)合同
- 數(shù)據(jù)安全與知情權(quán)平衡的委托加工合同
- 歷史建筑群三維激光掃描與保護(hù)利用合同
- 高性能工業(yè)模具設(shè)計(jì)專利授權(quán)與產(chǎn)業(yè)化合作協(xié)議
- 房地產(chǎn)行政助理派遣與辦公環(huán)境改善及維護(hù)協(xié)議
- 《艾薩克·牛頓》課件
- 網(wǎng)絡(luò)表情包的流行趨勢分析-全面剖析
- 2024年四川省寧南縣事業(yè)單位公開招聘醫(yī)療衛(wèi)生崗筆試題帶答案
- 2025-2030中國非調(diào)質(zhì)鋼市場供需狀況與未來發(fā)展戰(zhàn)略規(guī)劃研究研究報(bào)告
- 2025年高考作文素材積累之4月時(shí)事熱點(diǎn)及時(shí)評(píng)
- 2025年四川省自然資源投資集團(tuán)有限責(zé)任公司招聘筆試參考題庫含答案解析
- 2025重慶機(jī)場集團(tuán)限公司公開招聘46人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年浙江省寧波市一??茖W(xué)試卷
- 初中數(shù)學(xué)融入課程思政的路徑探索
- 《Python數(shù)據(jù)可視化》全套教學(xué)課件
- GB 29743.2-2025機(jī)動(dòng)車?yán)鋮s液第2部分:電動(dòng)汽車?yán)鋮s液
評(píng)論
0/150
提交評(píng)論