在 Golang 語言當中自帶一個輕量級的測試框架 testing 和有提供 go test 命令進行單元測試和性能測試
所有檔案名稱後綴為 _test.go 都是 go test 的測試的一部分
測試分三種類型
package main
func addUpper(n int) int {
res := 0
for i := 0; i <= n; i++ {
res += i
}
return res
}
使用 testing 進行assert
package main
import "testing"
func TestAddUpper(t *testing.T) {
res := addUpper(10)
if res != 55 {
t.Fatalf("expect awsner is 55 but get %d", res)
}
t.Log("執行正確")
}
可以開起子測試來進行測試多筆數據
package main
import (
"strconv"
"testing"
)
func TestAddUpper(t *testing.T) {
type testCase struct {
n int
expect int
}
var c = []testCase{
{
n: 10,
expect: 55,
},
}
for k, tc := range c {
t.Run(strconv.Itoa(k), func(t *testing.T) {
res := addUpper(tc.n)
if res != tc.expect {
t.Fatalf("expect awsner is %d but get %d", tc.expect, res)
}
})
}
}
可以使用 go test -cover 來查看覆蓋率
額外提供一個 --coverprofile 參數 可將覆蓋率相關文件輸出成文件格式
go test -cover --coverprofile=cover.out
執行 go tool cover -html=cover.out
可以用 html 方式來呈現