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