t.Error ve t.Fatal
- Go kursu
- Orta seviye
- Ders 42/80
- 4 dk
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
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
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
if err != nil {
t.____("kurulum başarısız: %v", err)
}
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 |