Go語言編寫單元測試用例

2022-06-03 04:45:07 字數 2485 閱讀 8811

go單元測試示例

example/

|--division.go

|--division_test.go

為什麼被測試檔案和測試檔案通常放到同乙個資料夾下以及同乙個宣告包裡

通常情況下,我們把被測試的檔案與另外寫的測試檔案放到同乙個宣告包裡面,稱為包內測試

當然也可以把測試函式的檔案放到獨立的乙個包裡面,稱為包外測試

不過,包外測試原始碼檔案存在乙個弊端,那就是在它們的測試函式中無法測試被測原始碼檔案中的包級私有的程式實體,比如包級私有的變數函式結構體型別。這是因為這兩者的所屬**包是不相同的。所以,一般很少會編寫包外測試原始碼檔案。

單元測試規則

單元測試寫法

兩種寫法:自己手寫、借助工具生成

方法1:自己手寫

等待被測試的檔案 division.go 如下,需要在同乙個包裡寫乙個測試檔案命名為mydivision_test.go

1

package

math23

import

(4 "errors"5)

67func division(a, b float64) (float64, error)

1112

return a /b, nil

13 }

直接自己擼測試函式,這樣比較靈活想怎麼測就怎麼測

mydivision_test.go

1

package

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.」區域來填用例

1

package

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...