許多程式語言在主程式寫好後,還需要對程式進行測試,這時就需要寫測試的檔案。在 Go 語言中,測試框架已經有內建套件(testing)了,不需要在選擇框架或是安裝後第三方套。
今天寫好了程式後,如果你需要測試的檔案名稱為 stat.go,那麼需要新增一個檔案,這檔案名稱為檔案名後加上 _test,即為 stat_test.go。
我們先來看 stat.go:
package stat
func Mean(data []float64) (mean float64){
var sum float64
for _, v := range data{
sum += v
}
mean = sum/float64(len(data))
return
}
這是在前幾天的文章出現過的例子,是在計算一串數據的平均值,接著我就是要對這個函式做個測試了。
先新增 stat_test.go 這個檔案,我們先來看程式碼:
package stat
import "testing"
func TestMean1(t *testing.T) {
if Mean([]float64{1,2,3}) != 2{
t.Error("fail")
}
}
func TestMean2(t *testing.T) {
if Mean([]float64{1,9,5}) != 5{
t.Error("fail")
}
}
func TestMean3(t *testing.T) {
if Mean([]float64{6,7,10}) != 23.0/3.0{
t.Error("fail")
}
}
我們解釋一下上述程式碼,一開始,你需要載入套件 testing,接著你必須寫一個 function,並且可能在裡頭運算你要測試的函式,在看是否符合所想要的答案。
接著要在終端機運行下列指令:
$ go test -v -cover=true stat_test.go stat.go
=== RUN TestMean1
--- PASS: TestMean1 (0.00s)
=== RUN TestMean2
--- PASS: TestMean2 (0.00s)
=== RUN TestMean3
--- PASS: TestMean3 (0.00s)
PASS
coverage: 100.0% of statements
ok command-line-arguments 0.379s coverage: 100.0% of statements
而為什麼要把測試分成三個函式來寫呢?
因為每個測試案例(Test Case)都應該是獨立的,每個測試函式都是一個測試案例,這樣比較能 check 是測試寫錯還是真的函式寫錯。
今天介紹 Go 語言的測試如何去建構,用一個比較簡單的例子帶大家了解,當然隨著你的程式邏輯越來越複雜,測試也會越來越難寫,需要考慮更多細節,就有待你的經驗累積。希望今天的文章對你有幫助,感謝今天的閱讀!