Test單元測試
尚硅谷Golang課
Test單元測試
- 單元測試目的是驗證程式碼(例如一個方法)本身的邏輯是否正確
- 單元測試應排除外部依賴(Database、File System IO)
- 單元測試應該是隨時隨地都要能正確執行
- 單元測試的標題需要具備好的可讀性、明確、標題與測試的內容精確吻合 例:「public void GetTest_帶入會員ID_應回該ID搜尋到的會員資料DTO」,盡量符合:受測方法_傳入參數意義_期望得到的結果
- 一個測試只應該關注一件事情,如果受測目標有多種狀況,應該分成好幾個測試去涵蓋所有邏輯
3A原則
- Arrange = 準備受測物件、參數、預期結果
- Act = 執行受測方法
- Assert = 驗證執行結果與預測結果是否一致
cal.go
func addUpper(n int) int {
res := 0
for i := 0; i <= n; i++ {
res = +i
}
return res
}
func getSub(n1, n2 int) int {
return n1 - n2
}
cal_test.go
func TestAddUpper(t *testing.T) {
//調用
res := addUpper(10)
if res != 55 {
t.Fatalf("AddUpper(10)執行錯誤 期望=%v 實際=%v", 55, res)
}
t.Logf("執行正確")
}
func TestHello(t *testing.T) {
fmt.Println("hello")
}
func TestGetSub(t *testing.T) {
res2 := getSub(5, 10)
if res2 != 10 {
t.Fatalf("getSub(5, 10)執行錯誤 期望=%v 實際=%v", 10, res2)
}
t.Logf("執行正確")
}
測性能
Split.go
// abc,b=>[a c]
func Split(str, sep string) []string {
// str="bsfcvjkhbafs" sep="b"
var ret = make([]string, 0, strings.Count(str, sep)+1)
index := strings.Index(str, sep)
for index >= 0 {
ret = append(ret, str[:index])
str = str[index+len(sep):]
index = strings.Index(str, sep)
}
ret = append(ret, str)
return ret
}
Split_test.go
func BenchmarkSplit(b *testing.B) {
for i := 0; i < b.N; i++ {
Split("a:b:c", ":")
}
}
上次修改於 2021-08-01
此篇文章的評論功能已經停用。