irfo
Moderatör
- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Kalite Kontrol
Yazılım dünyasında "Kodu yazdım, çalışıyor" demek yetmez. "Kodu test ettim, her senaryoda çalışıyor" demelisiniz. Java veya C# gibi dillerde test için harici kütüphaneler (JUnit, NUnit) gerekirken, Go'nun içinde dahili bir test aracı gelir.Test Dosyası Kuralları
Go'da test yazmak için özel bir klasöre gerek yoktur. Test dosyası, kodun hemen yanında durur.- Dosya adı _test.go ile bitmelidir (örn: hesap_test.go).
- Test fonksiyonu Test ile başlamalıdır (örn: TestTopla).
- Fonksiyon *testing.T parametresi almalıdır.
İlk Test Kodu
Basit bir toplama fonksiyonunu test edelim.Kod (hesap.go):
Kod:
package main
func Topla(a, b int) int {return a + b}
Test (hesap_test.go):
Kod:
package main
import "testing"
func TestTopla(t *testing.T) {sonuc := Topla(2, 3)beklenen := 5
if sonuc != beklenen {<br> // t.Errorf testi başarısız işaretler ve mesaj basar<br> t.Errorf("Hatalı sonuç! Beklenen: %d, Gelen: %d", beklenen, sonuc)<br>}<br>
}
Testi Çalıştırma
Terminalde projenin olduğu klasörde şu komutu yazın:go test veya detaylı çıktı için go test -v.Table Driven Tests (Go Tarzı Test)
Go'da testler genellikle bir struct dizisi (tablo) üzerinden döngü ile yapılır. Bu sayede onlarca senaryoyu tek fonksiyonda test edebilirsiniz.
Kod:
func TestToplaTablo(t *testing.T) {senaryolar := []struct {a, b intbeklenen int}{{1, 2, 3},{10, 20, 30},{-1, 1, 0},}
for _, s := range senaryolar {<br> sonuc := Topla(s.a, s.b)<br> if sonuc != s.beklenen {<br> t.Errorf("Girdi: %d+%d, Beklenen: %d, Gelen: %d", s.a, s.b, s.beklenen, sonuc)<br> }<br>}<br>
}