go單元測試示例
example/|--division.go
|--division_test.go
為什麼被測試檔案和測試檔案通常放到同乙個資料夾下以及同乙個宣告包裡
通常情況下,我們把被測試的檔案與另外寫的測試檔案放到同乙個宣告包裡面,稱為包內測試;
當然也可以把測試函式的檔案放到獨立的乙個包裡面,稱為包外測試。
不過,包外測試原始碼檔案存在乙個弊端,那就是在它們的測試函式中無法測試被測原始碼檔案中的包級私有的程式實體,比如包級私有的變數、函式和結構體型別。這是因為這兩者的所屬**包是不相同的。所以,一般很少會編寫包外測試原始碼檔案。
單元測試規則
單元測試寫法
兩種寫法:自己手寫、借助工具生成
方法1:自己手寫
等待被測試的檔案 division.go 如下,需要在同乙個包裡寫乙個測試檔案命名為mydivision_test.go
1package
math23
import
(4 "errors"5)
67func division(a, b float64) (float64, error)
1112
return a /b, nil
13 }
直接自己擼測試函式,這樣比較靈活想怎麼測就怎麼測
mydivision_test.go
1package
math23
import
(4 "testing"5)
67//用例1
8 func test_division_1(t *testing.t) else14}
15//
用例216 func test_division_2(t *testing.t)
執行命令go test -v .
結果如下
$ go test -v .===run test_division_1
--- pass: test_division_1 (0.00s)
mydivision_test.go:11: 第乙個測試通過了
===run test_division_2
--- fail: test_division_2 (0.00s)
mydivision_test.go:16: 執行t.error分支就會提示測試失敗
fail
exit status 1fail mytest/gotest 0.001s
方法二:借助工具生成
步驟:先安裝gotests工具包:go get -v github.com/cweill/gotests/...
執行命令gotests -all -w .
為當前目錄所有檔案生成對應測試檔案
結果為division.go生成了division_test.go檔案如下,生成檔案的預設字首為對應的原檔名
division_test.go,然後留出一片「// todo: add test cases.」區域來填用例
1package
math23
import "testing"
45 func testdivision(t *testing.t)
10 tests :=struct , 3, false
},18 , 0, true},//
注意第二個用例是會返回error的,因為除數不能為0,所以此處wanterr為true19}
20for _, tt :=range tests
27if got !=tt.want
30})31}
32 }
執行結果
兩個用例都通過了測試
$ go test -v .===run testdivision
=== run testdivision/case_0
=== run testdivision/case_1
--- pass: testdivision (0.00s)
--- pass: testdivision/case_0 (0.00s)
--- pass: testdivision/case_1 (0.00s)
pass
ok mytest/gotest 0.001s
單元測試,測試用例 GO語言
資料夾目錄 split string split.go split string split test.go 執行測試函式 package split string import reflect testing 單元測試 可以和測試 放到一起,用同樣的包名 以測試 名開頭,以 test.go 結尾哦...
Go語言單元測試
go語言似乎是個偏執狂,犧牲了不必要的靈活性,帶來一些強制的程式設計風格和約定。比如 無任何形式的makefile,模組就是目錄 包就是目錄 編譯配製就是目錄!不光目錄被用上了,檔名還能指定用途。檔名字尾為 test.go的都是單元測試檔案,linux32.go就是32位linux特定的 不光檔名被...
python單元測試用例設計
在剛學習程式設計的時候總是忘記處理一些特例 尤其是動態語言可以傳各種值 為了養成良好的程式設計和測試習慣,在編寫單元測試用例的時候,我們注意考慮下如下測試用例 等價類劃分 def binary search array,target if not array return 1 beg,end 0,l...