tdd 流程有助于確保 go 函數(shù)的正確性和行為文檔。步驟:1) 編寫使用 go test 命令的測試,定義函數(shù)和測試用例。2) 編寫滿足測試用例行為的函數(shù)代碼。3) 運行 go test 命令驗證函數(shù)是否符合預期。4) 根據(jù)需要重復步驟 1-3,完善函數(shù)實現(xiàn)并完善測試用例,直到所有測試都能通過。
Golang 函數(shù)的 TDD(測試驅(qū)動開發(fā))流程
測試驅(qū)動開發(fā) (TDD) 是一種軟件開發(fā)過程,其中開發(fā)人員首先編寫測試,然后編寫滿足這些測試所需的代碼。對于 Go 語言函數(shù),TDD 流程可以幫助確保函數(shù)的正確性,并為其行為提供文檔。
步驟
-
編寫測試:使用
go test
命令創(chuàng)建一個測試文件,定義要測試的函數(shù)以及相應的測試用例。package main import ( "testing" ) func TestAdd(t *testing.T) { tests := []struct { a, b int want int }{ {1, 2, 3}, {3, 4, 7}, } for _, tc := range tests { got := Add(tc.a, tc.b) if got != tc.want { t.Errorf("Add(%d, %d) = %d, want %d", tc.a, tc.b, got, tc.want) } } }
登錄后復制
- 編寫代碼:編寫實現(xiàn)測試用例中指定行為的函數(shù)。
package main import "fmt" func Add(a, b int) int { return a + b } func main() { fmt.Println(Add(1, 2)) // 輸出:3 }
登錄后復制
- 運行測試:運行
go test
命令驗證函數(shù)是否符合預期。$ go test ok test.go 0.000s
登錄后復制登錄后復制
- 重復:如有必要,重復以上步驟,編寫更多測試用例并完善函數(shù)實現(xiàn),直到所有測試都能通過。
實戰(zhàn)案例
假設你想要實現(xiàn)一個 Golang 函數(shù) isPrime
來確定一個數(shù)字是否為質(zhì)數(shù)。TDD 流程可以如下進行:
編寫測試:
package main import ( "testing" ) func TestIsPrime(t *testing.T) { tests := []struct { n int prime bool }{ {1, false}, {2, true}, {3, true}, {4, false}, {19, true}, {100, false}, } for _, tc := range tests { got := IsPrime(tc.n) if got != tc.prime { t.Errorf("IsPrime(%d) = %t, want %t", tc.n, got, tc.prime) } } }
登錄后復制
編寫代碼:
package main import "math" func IsPrime(n int) bool { if n <= 1 { return false } for i := 2; i <= int(math.Sqrt(float64(n))); i++ { if n%i == 0 { return false } } return true } func main() { fmt.Println(IsPrime(19)) // 輸出:true }
登錄后復制
運行測試:
$ go test ok test.go 0.000s
登錄后復制登錄后復制