Unit Testing: xUnit veya NUnit ile Kodlarınızı Test Edin

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

Unit Testing: xUnit ve NUnit ile Kaliteli Kod Yazımı​


Unit Test**, uygulamanın mantıksal en küçük birimlerini (genellikle tek bir metodu) izole ederek test etme işlemidir. Bu testler, gelecekte koda yeni özellik eklediğinizde eski yerlerin bozulup bozulmadığını (Regression) anında anlamanızı sağlar.



1. Neden Test Yazmalıyız? (AAA Kuralı)​


Bir testi yazarken dünya standartlarında kabul görmüş AAA (Arrange, Act, Assert) kuralını uygularız:


  • []Arrange (Hazırlık): Test için gerekli nesneleri ve verileri hazırla.
    []Act (Eylem): Test edilecek metodu çalıştır.
  • Assert (Doğrulama): Çıkan sonuç beklediğin sonuç mu? Kontrol et.



2. xUnit ile İlk Testinizi Yazın​


.NET dünyasında en modern ve popüler test framework'ü xUnit'tir.

C#:
// Test edilecek basit bir sınıf
public class Matematik
{
public int Topla(int a, int b) => a + b;
}

// Test Sınıfı
public class MatematikTestleri
{
[Fact] // Bu bir test metodudur
public void Topla_IkiPozitifSayi_ToplaminiDoner()
{
// Arrange
var matematik = new Matematik();

    // Act
    var sonuc = matematik.Topla(5, 10);
    
    // Assert
    Assert.Equal(15, sonuc);
}

}



3. Mocking (Taklit Etme): Moq Kütüphanesi​


Birim testlerinde kural, dış dünyadan (Veritabanı, API, Dosya Sistemi) bağımsız olmaktır. Eğer test ettiğiniz metod bir veritabanına gidiyorsa, orayı "sahte" (Mock) bir nesneyle taklit etmelisiniz.

C#:
// IEmailService'i taklit ediyoruz, gerçekten e-posta gitmiyor!
var mockEmail = new Mock<IEmailService>();
mockEmail.Setup(x => x.Send(It.IsAny<string>())).Returns(true);

var servis = new SiparisServisi(mockEmail.Object);
var sonuc = servis.Onayla(101);

Assert.True(sonuc);



4. Test Framework Karşılaştırması​


ÖzellikxUnitNUnitMSTest
PopülerlikÇok Yüksek (Modern)Yüksek (Klasik)Orta (Microsoft Standardı)
Test Attribute[Fact], [Theory][Test], [TestCase][TestMethod]
İzole ÇalışmaHer test için yeni sınıf örneğiAynı sınıf örneği kullanılabilirAynı sınıf örneği



5. Test Odaklı Geliştirme (TDD) Nedir?​


TDD (Test Driven Development), kodu yazmadan önce testini yazma disiplinidir. Döngü şöyledir:

  1. []Red (Kırmızı): Önce testi yaz (henüz kod yok, test kalacak).
    []Green (Yeşil): Testi geçecek kadar minimum kodu yaz.
  2. Refactor (Düzenle): Kodu temizle ve iyileştir.



Sonuç​


Unit Test yazmak başlangıçta zaman kaybı gibi görünebilir, ancak projeniz büyüdüğünde bir yeri düzeltirken başka bir yeri bozma korkusunu (Fear of Change) tamamen ortadan kaldırır. "Testi geçen kod, güven veren koddur."
 
Geri
Üst