Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Eski Integration ve E2E Testlerini Okumak: WebApplicationFactory .NET 6'dan 11'e, Testcontainers 3'ten 4'e, Protractor'dan Playwright'a
Eski bir integration testini okurken ilk soru, factory'nin hangi uygulamayı ayağa kaldırdığıdır: Startup tabanlı bir factory .NET 10'da derlenip Bookstore'u hiç çalıştırmadan 404 döndürebilir. WebApplicationFactory'nin .NET 6'dan 11'e değişimini, .NET 11'in ConfigureWebApplicationBuilder hook'unu, Testcontainers 4 değişikliklerini, Protractor'dan geçişi ve Playwright 1.58–1.65'teki kırıcı değişiklikleri gerçek derleme ve koşularla anlatıyoruz.
Bookstore'u Uçtan Uca Test Etmek: API, Angular ve Veritabanını Birlikte Ayağa Kaldırmak
Playwright'ın webServer'ı iki process başlatır: SQL Server container'ını açıp API'yi WebApplicationFactory.UseKestrel ile gerçek portta çalıştıran bir .NET host'u ve ng serve. Host'taki üç sürprizi, login'i setup project ve storageState ile bir kez yapmayı, test verisini API'den hazırlamayı, page object ile fixture'ı birlikte kullanmayı ve UseKestrel'in WithWebHostBuilder'la portu yok saymasını gerçek koşularla gösteriyoruz.
WebApplicationFactory Derinlemesine: Custom Factory, ConfigureTestServices, Configuration ve Test Authentication
Test configuration'ını UseSetting veya CreateHost ile ver; ConfigureAppConfiguration'la verilen değer Program.cs'in Build öncesinde okuduğu yere ulaşmaz. Custom factory'de service değiştirmeyi, header tabanlı test authentication handler'ıyla 401 ve 403'ü ayırmayı, redirect ve ProblemDetails helper'larını, WithWebHostBuilder'ın gerçek maliyetini ve testte istemeden çalışan background service'leri ölçümlerle gösteriyoruz.
.NET 10'da Integration Test Altyapısı: Neyi Gerçek, Neyi Sahte Çalıştırıyoruz?
Bu serideki integration test, API'yi test process'inde production pipeline'ıyla, veritabanını gerçek SQL Server container'ıyla çalıştırır; yalnız ödeme, kargo ve e-posta gibi dış servisler sınırda taklit edilir. SQLite ve InMemory'nin collation, uzunluk, precision ve transaction farklarını gerçek koşuyla gösteriyor, xUnit v3 + Testcontainers iskeletini kurup unit testlerden ayırıyoruz.