tdd 流程有助于確保 go 函數(shù)的正確性和行為文檔。步驟:1) 編寫使用 go test 命令的測試,定義函數(shù)和測試用例。2) 編寫滿足測試用例行為的函數(shù)代碼。3) 運行 go test 命令驗證函數(shù)是否符合預期。4) 根據需要重復步驟 1-3,完善函數(shù)實現(xiàn)并完善測試用例,直到所有測試都能通過。
Golang 函數(shù)的 TDD(測試驅動開發(fā))流程
測試驅動開發(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ù)字是否為質數(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
登錄后復制登錄后復制






