Unit Testing: go test ile İlk Testinizi Yazın

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

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.

  1. Dosya adı _test.go ile bitmelidir (örn: hesap_test.go).
  2. Test fonksiyonu Test ile başlamalıdır (örn: TestTopla).
  3. 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>
}

Sonuç​

Go'da test yazmak o kadar kolaydır ki, test yazmamak için bahaneniz kalmaz. go test -cover komutu ile kodunuzun yüzde kaçının test edildiğini bile görebilirsiniz.
 
Geri
Üst