Table-Driven Tests
Jadval asosidagi testlar
Bitta funksiyani ko'p xil holatlarda sinash kerak bo'lsa, har biriga alohida test yozish o'rniga — barcha holatlarni bitta "jadval" (slice) qilib, ustidan bitta sikl bilan yuriladi. Bu Go'dagi eng ko'p ishlatiladigan test naqshi.
package main
import "testing"
func IsEven(n int) bool {
return n%2 == 0
}
func TestIsEven(t *testing.T) {
tests := []struct {
name string
in int
want bool
}{
{"juft", 4, true},
{"toq", 7, false},
{"nol", 0, true},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
got := IsEven(tc.in)
if got != tc.want {
t.Errorf("IsEven(%d) = %v, kutilgan %v", tc.in, got, tc.want)
}
})
}
}tests := []struct{...}{...} — har biri bitta holatni ifodalovchi anonim struct'lar slice'i ("jadval"). t.Run(nom, funksiya) esa har bir holatni alohida kichik test (subtest) sifatida ishga tushiradi — shuning uchun chiqishda TestIsEven/juft, TestIsEven/toq kabi alohida qatorlarni ko'rasiz. Yangi holat qo'shish uchun endi yangi funksiya yozish shart emas — jadvalga bitta qator qo'shish kifoya.
>_ Exercise
Abs funksiyasini jadval asosida sinang.
- •"ijobiy", "manfiy", "nol" holatlari uchun jadval yarating
- •t.Run bilan har birini alohida subtest sifatida tekshiring
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Jadval asosidagi testlar (table-driven tests) — ko'p holatni bitta test funksiyasida, t.Run orqali toza va kengaytiriladigan qilib tekshirishning Go'dagi standart usuli.
NEXT UP
Subtests and Parallel Testing
$ go run main.go
Kodingizni ishga tushiring