Tablo Tabanlı Testler
Alt testlerle parametreli testler
Tablo Tabanlı Testler, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
Tablo tabanlı sınamalar nedir?
Tablo tabanlı sınamalar, sınama durumlarından (girdiler ve beklenen çıktılar) oluşan bir dilim tanımlar ve tek bir sınama gövdesiyle bunlar üzerinde döngü kurar. Yinelemeyi azaltır ve durum eklemeyi kolaylaştırır.
Temel örüntü
Her durum için bir yapı tanımlayın, t.Run ile döngü kurun ve başarısızlıkları durum adıyla bildirin:
tests := []struct {
name string
input int
want int
}{
{"zero", 0, 0},
{"positive", 3, 9},
{"negative", -2, 4},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := Square(tt.input)
if got != tt.want {
t.Errorf("Square(%d) = %d; want %d", tt.input, got, tt.want)
}
})
}Anonim yapı dilimi
Sınama durumu türü için anonim bir yapı kullanın — bu, durum tanımını sınamaya yakın tutar ve yalnızca bir kez kullanılacak bir türe ad verme gereğini ortadan kaldırır.
Hata durumlarını ekleme
İşlevlerin beklenen senaryolarda hata döndürdüğünü sınamak için bir wantErr bool alanı ekleyin:
{"invalid input", -1, 0, true},
// in the loop:
if (err != nil) != tt.wantErr {
t.Errorf("wantErr %v, got err %v", tt.wantErr, err)
}Alt sınamaları adlandırma
Açıklayıcı bir ad alanı, başarısızlıkları kendi kendini açıklayan hâle getirir. Belirli bir durumu -run TestFunc/case_name ile çalıştırabilirsiniz.
t.Run ile paralel alt sınamalar
Her alt sınamayı paralel olarak işaretleyin ve durumları eş zamanlı çalıştırmak için döngü değişkenini yakalayın (özellikle sınamalar G/Ç ağırlıklı olduğunda önemlidir).
for _, tt := range tests {
tt := tt // capture
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
// ...
})
}Durum başına paylaşılan kurulum
Tekrarlanan standart kodu önlemeden durum başına kurulum yapılabilmesi için tt.setup işlev alanlarını kullanın:
type tc struct {
setup func() *DB
input string
want int
}Durumları okunabilir tutma
Durumlar büyürse bunları adlandırılmış değişkenler olarak tanımlayın veya sınama verisi dosyalarından yükleyin. Tabloyu, mümkün olduğunda durum başına bir satır olacak şekilde, kısa tutun.
Birden çok çıktıyı sınama
Her çıktı için bir alan ekleyerek birden çok değer döndüren tablo sınama işlevleri oluşturun:
type tc struct {
input string
wantVal int
wantErr bool
}Tablolarda Testify assert
Ayrıntılı if/t.Errorf blokları olmadan okunabilir doğrulamalar için tablo sınamalarının içinde github.com/stretchr/testify/assert kullanın.
assert.Equal(t, tt.want, got, tt.name)Durumlarla belgeleme
Durum tablosu yaşayan bir belge görevi görür. Gelecekteki geliştiriciler, desteklenen tüm girdileri ve uç durumları bir bakışta anlamak için bu tabloyu okuyabilir.
Hızlı Kontrol
Tablo tabanlı sınamalarda t.Parallel çağrısından önce döngü değişkenini (tt := tt) neden yakalarsınız?
Özet: Tablo Tabanlı Sınamalar
Temel noktalar:
- Girdileri, beklenen çıktıları ve hata işaretini kapsayan yapı dilimi
- Adlandırılmış ve bağımsız alt sınamalar için t.Run ile döngü
- t.Parallel çağrısından önce döngü değişkenini yakalama (tt := tt)
- Durumlar, desteklenen davranışların yaşayan belgeleri olarak görev yapar
Sıkça Sorulan Sorular
“Tablo Tabanlı Testler” dersi ücretsiz mi?
Evet — “Tablo Tabanlı Testler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“Tablo Tabanlı Testler” dersinde ne öğreneceğim?
Alt testlerle parametreli testler Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Tablo Tabanlı Testler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- testing ile Birim Testleri Yazma
- Tablo Tabanlı Testler
- Test Çiftleri: Taklitler ve Taslaklar
- Test Kapsamı ve testify