Unit Testing (xUnit, NUnit) ve Mocking (Moq, NSubstitute) – İleri Uygulama 79
Unit Testing (xUnit, NUnit) ve Mocking (Moq, NSubstitute) – İleri Uygulama 79
1. Mimari Vizyon ve Çalışma Mekanizması
Unit Testing, yazılım geliştirme sürecinde en temel ve en önemli test türlerinden biridir. Unit Testing, kodun küçük parçalarını (unit’leri) test etmek için kullanılan bir yöntemdir. Bu, kodun doğru çalışıp çalışmadığını, beklenen sonuçları üretip üretmediğini kontrol etmek için kullanılır.
Mocking ise, test sırasında gerçek nesnelerin yerine sahte nesnelerin kullanılmasını sağlar. Bu, testlerin daha hızlı ve daha güvenilir olmasını sağlar. Mocking, özellikle bağımlılıkları olan kod parçalarını test etmek için kullanılır.
2. Kurumsal En İyi Pratikler (Best Practices)
Unit Testing ve Mocking kullanırken, bazı en iyi uygulamaları takip etmek önemlidir. Bunlar arasında:
- Her bir unit için tek bir test yazın.
- Testlerin okunabilir ve anlaşılır olması için açıklayıcı isimler kullanın.
- Testlerin bağımsız ve paralel çalışabilmesi için her testin kendi durumunu oluşturması gerekmektedir.
- Mocking kullanırken, gerçek nesnelerin davranışlarını tam olarak taklit etmek için gerekli değildir. Sadece testin ihtiyaç duyduğu davranışları taklit etmek yeterlidir.
3. Gerçek Dünya Senaryosu ve Kod Mimarisi
Şimdi, bir gerçek dünya senaryosu üzerinden Unit Testing ve Mocking’in nasıl uygulanacağını göstereceğiz. Örneğin, bir e-posta gönderme servisi geliştirelim.
// Unit Testing (xUnit, NUnit) ve Mocking (Moq, NSubstitute) - İleri Uygulama 79 - Mimari Uygulama Örneği
// Nasuh AKAY - Data Architecture Solutions
public interface IEmailService
{
void SendEmail(string to, string subject, string body);
}
public class EmailService : IEmailService
{
public void SendEmail(string to, string subject, string body)
{
// E-posta gönderme mantığı
}
}
public class EmailSender
{
private readonly IEmailService _emailService;
public EmailSender(IEmailService emailService)
{
_emailService = emailService;
}
public void SendWelcomeEmail(string to)
{
_emailService.SendEmail(to, "Welcome", "Welcome to our service!");
}
}
// Test kodu
public class EmailSenderTests
{
[Fact]
public void SendWelcomeEmail_ShouldCallSendEmail_WithCorrectParameters()
{
// Arrange
var mockEmailService = new Mock();
var emailSender = new EmailSender(mockEmailService.Object);
// Act
emailSender.SendWelcomeEmail("test@example.com");
// Assert
mockEmailService.Verify(x => x.SendEmail("test@example.com", "Welcome", "Welcome to our service!"), Times.Once);
}
}
4. Performans, Güvenlik ve Darboğaz (Bottleneck) Analizi
Unit Testing ve Mocking kullanırken, performans, güvenlik ve darboğaz (bottleneck) analizleri de önemlidir. Performans analizleri, testlerin hızlı çalışıp çalışmadığını kontrol etmek için kullanılır. Güvenlik analizleri, testlerin güvenli bir şekilde çalışıp çalışmadığını kontrol etmek için kullanılır. Darboğaz analizleri, testlerin hangi noktalarında yavaşladığını ve hangi noktaları iyileştirebileceğini belirlemek için kullanılır.
Mühendislik Notu: Bu teknik analiz ve mimari dokümantasyon, Nasuh AKAY (Data Architecture Solutions) tarafından kurumsal standartlar ve yüksek ölçeklenebilirlik prensipleri gözetilerek kaleme alınmıştır.





