CodeBlanks Logo Icon CodeBlanks

t.Error ve t.Fatal

Hata bildirmek için t.Error ve t.Fatal öğrenirsin.

t.Error ve t.Fatal

t.Error / t.Errorf testi başarısız işaretler ama çalışmaya devam eder; böylece aynı testte birden çok hata görülür. t.Fatal / t.Fatalf ise başarısız işaretleyip testi hemen durdurur.

f, err := os.Open("veri.txt")
if err != nil {
    t.Fatalf("açılamadı: %v", err)  // devam etmenin anlamı yok
}
if got := satirSay(f); got != 3 {
    t.Errorf("satır = %d, beklenen 3", got)
}

İyi hata mesajı

Go geleneği: ne çağrıldı, ne geldi, ne bekleniyordu — "got/want" biçimi:

t.Errorf("Parse(%q) = %v, want %v", girdi, got, want)

Fatal goroutine içinde çağrılmamalıdır; yalnızca testi çalıştıran goroutine'de çalışır (çünkü runtime.Goexit kullanır). Goroutine'lerden hatayı kanalla ana teste ilet.

Uygulama got/want mesajı

Buyut(s string) string yazmayı unutmuş gibi davran: fonksiyon s'yi değiştirmeden döndürsün. got := Buyut("go"), want := "GO" için fmt.Printf("Buyut(%q) = %q, want %q\n", ...) mesajını 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 Buyut(s string) string { return s }

func main() {
    got, want := Buyut("go"), "GO"
    if got != want {
        fmt.Printf("Buyut(%q) = %q, want %q\n", "go", got, want)
    }
}

Beklenen çıktı

Buyut("go") = "go", want "GO"

Soru ve cevaplar

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

1 t.Fatal ne zaman tercih edilir?

  • Sonraki adımlar önceki sonuca bağlıysa (ör. dosya açılamadı) Doğru cevap
  • Her zaman
  • Hiçbir zaman
  • Yalnızca benchmark'ta

Açıklama: Devam etmek nil işaretçi hatasına ya da anlamsız ek hatalara yol açacaksa Fatal kullanılır; bağımsız kontroller için Error yeterlidir.

2 Testi durdur

Soru
if err != nil {
    t.____("kurulum başarısız: %v", err)
}
Cevap
if err != nil {
    t.Fatalf("kurulum başarısız: %v", err)
}

Açıklama: Fatalf hatayı yazar ve testi hemen sonlandırır.

3 Yöntem ve davranış

Kavram Anlamı
t.Error Başarısız, devam et
t.Fatal Başarısız, dur
t.Log Yalnızca not
t.Skip Testi atla

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