İçeriğe geç

C#'da Unit Test Yazma: NUnit ve xUnit ile TDD Rehberi

30.08.2024 1,609 okunma

Unit Test Neden Yazılmalı?

Unit test, uygulamanın en küçük parçalarını (metot, sınıf) bağımsız olarak doğrulayan otomatik testlerdir. Kaliteli yazılımın temel göstergelerinden biri kapsamlı bir unit test altyapısıdır. Testler; refactoring sırasında güvenlik ağı oluşturur, regresyon hatalarını erkenden yakalar ve kodun belgelemesi işlevi görür.

xUnit ile Test Projesi Oluşturma

// NuGet: xunit, xunit.runner.visualstudio, Microsoft.NET.Test.Sdk
public class HesaplamaciTests {
    private readonly Hesaplamaci _hesap = new();

    [Fact]
    public void Topla_IkiPozitifSayi_ToplamDogru() {
        var sonuc = _hesap.Topla(3, 5);
        Assert.Equal(8, sonuc);
    }

    [Theory]
    [InlineData(0, 5, 5)]
    [InlineData(-3, 3, 0)]
    public void Topla_CesitliSenaryolar(int a, int b, int beklenen) {
        Assert.Equal(beklenen, _hesap.Topla(a, b));
    }
}

AAA Deseni: Arrange-Act-Assert

Her unit test şu üç bölümden oluşur:

  • Arrange: Test nesnelerini ve bağımlılıkları hazırla.
  • Act: Test edilecek metodu çalıştır.
  • Assert: Beklenen ve gerçek sonucu karşılaştır.

Moq ile Mock Nesneler

Dış bağımlılıkları (veritabanı, API) gerçek yerine sahte (mock) nesnelerle simüle etmek için Moq kütüphanesi kullanılır:

var mockRepo = new Mock<IUrunRepository>();
mockRepo.Setup(r => r.GetById(1))
        .Returns(new Urun { Id = 1, Ad = "Test" });

var service = new UrunService(mockRepo.Object);
var urun = service.GetUrun(1);

Assert.Equal("Test", urun.Ad);
mockRepo.Verify(r => r.GetById(1), Times.Once);

Code Coverage ve Test Kalitesi

Visual Studio ve Coverlet araçlarıyla code coverage ölçülür. %80+ coverage iyi bir hedef olmakla birlikte coverage oranı tek başına test kalitesini göstermez; anlamlı assertion'lar ve edge case'lerin kapsanması daha önemlidir.

TDD: Test Driven Development

TDD yaklaşımında önce test yazılır (Red), ardından testi geçirecek minimum kod eklenir (Green), son olarak kod refactor edilir (Refactor). Bu döngü "Red-Green-Refactor" olarak bilinir ve temiz, test edilebilir kodun ortaya çıkmasını sağlar.

Bilkey C# Programlama Kursu

Bilkey Bilişim Akademisi C# Programlama Kursu'nda unit test yazma, TDD yaklaşımı, Moq kullanımı ve yazılım kalitesi konuları uygulamalı olarak öğretilmektedir. Kurtköy merkezimizde profesyonel .NET geliştirici olun. 0216 354 7979

c# unit test xunit c# nunit c# c# tdd mock nesne c# c# test driven development
C# Programlama Eğitimi hakkında bilgi almak ister misiniz?

Birebir özel yüz yüze eğitim yada uzaktan eğitim, esnek ders saatleri ile Pendik Kurtköy'de.