CodeBlanks Logo Icon CodeBlanks

Test yardımcıları

t.Helper ve t.Cleanup gibi yardımcıları öğrenirsin.

Test yardımcıları

Tekrar eden kontrolleri yardımcı fonksiyonlara taşı ve başına t.Helper() ekle; böylece hata satırı yardımcının içini değil, onu çağıran test satırını gösterir:

func esit(t *testing.T, got, want int) {
    t.Helper()
    if got != want {
        t.Errorf("got %d, want %d", got, want)
    }
}

Kurulum gerektiren kaynaklar için t.Cleanup(f) test bitince çalışacak temizliği kaydeder; t.TempDir() otomatik silinen geçici klasör verir.

Paralel testler ve TestMain

t.Parallel() çağıran testler aynı paketteki diğer paralel testlerle eşzamanlı çalışır; yavaş G/Ç testlerini hızlandırır. Tüm paket için tek seferlik kurulum gerekiyorsa TestMain(m *testing.M) yazılır:

func TestMain(m *testing.M) {
    db := kur()
    kod := m.Run()
    db.Close()
    os.Exit(kod)
}

Uygulama Temizlik sırası

t.Cleanup'ın LIFO davranışını defer ile taklit et: calistir() içinde sırayla defer fmt.Println("db kapandı") ve defer fmt.Println("dosya silindi") kaydet, ardından "test" yazdır.

Başlangıç kodu

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import "fmt"

func calistir() {
    defer fmt.Println("db kapandı")
    defer fmt.Println("dosya silindi")
    fmt.Println("test")
}

func main() {
    calistir()
}

Beklenen çıktı

test
dosya silindi
db kapandı

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>t.Cleanup</code> ile kaydedilen fonksiyonlar hangi sırayla çalışır?

  • Rastgele
  • Paralel
  • Son kaydedilen ilk çalışır (LIFO) Doğru cevap
  • Kayıt sırasıyla

Açıklama: Cleanup defer gibi davranır; sonradan kurulan kaynak önce kapatılır.

2 Satırı düzelt

Soru
func esit(t *testing.T, got, want string) {
    t.____()
    if got != want { t.Errorf("got %q, want %q", got, want) }
}
Cevap
func esit(t *testing.T, got, want string) {
    t.Helper()
    if got != want { t.Errorf("got %q, want %q", got, want) }
}

Açıklama: t.Helper bu fonksiyonu yardımcı olarak işaretler; hata konumu çağıran satırı gösterir.

3 Yardımcı ve görevi

Kavram Anlamı
t.Helper() Doğru hata satırı
t.Cleanup(f) Test sonu temizlik
t.TempDir() Geçici klasör
t.Parallel() Eşzamanlı çalıştırma

Orta seviye bölümündeki tüm dersler