Asp.Net'te BİRİM TESTİ: Eğitimin Tamamı
⚡ Akıllı Özet
Visual Studio'da bir ASP.NET uygulamasının birim testine başlamak için, bir Birim Test Projesi oluşturulur, hedef projeye bir referans bağlanır, MSTest [TestClass] ve [TestMethod] öznitelikleri eklenir ve sınıfların tasarlandığı gibi davrandığını kanıtlamak için Assert yöntemleri çağrılır.
Test, herhangi bir programlama dilinin önemli bir yönüdür. Test yapmak ASP.NET uygulamaları için bu, Visual Studio yardımıyla mümkündür.
Visual Studio, test kodu oluşturmak için kullanılır. Ayrıca ASP.NET uygulaması için test kodunu çalıştırmak için de kullanılır. Bu sayede, bir ASP.NET uygulamasındaki hataları kontrol etmek kolaylaşır. Visual Studio'da, test modülü kullanıma hazır bir işlevsellikle birlikte gelir. Bir kişi doğrudan bir ASP.NET projesi için test gerçekleştirebilir.
ASP.NET için test etmeye giriş
ASP.NET projesinin test edilmesinin ilk aşaması birim düzeyinde testtir. Bu test, uygulamanın işlevselliğini ölçer. Test, uygulamanın beklendiği gibi davrandığından emin olmak için yapılır. ASP.NET'te ilk görev, Visual Studio'da bir test projesi oluşturmaktır. Test projesi, uygulamayı test etmek için gerekli kodu içerecektir.
Aşağıdaki web sayfasını ele alalım. Sayfada şu mesaj yer almaktadır:Guru"99 – ASP.NET" mesajı görüntüleniyor. Peki, bir ASP.NET projesi çalıştırıldığında doğru mesajın görüntülendiğini nasıl doğrulayabiliriz? Bu, ASP.NET çözümüne (web tabanlı uygulamalar geliştirmek için kullanılır) bir test projesi ekleyerek yapılır. Bu test projesi, kullanıcıya doğru mesajın görüntülendiğinden emin olacaktır.
Şimdi daha detaylı inceleyelim ve ASP.NET'te test etme çalışmalarını nasıl yürütebileceğimizi görelim.
.NET Birim Test Projesi Oluşturma
Bir test projesi oluşturmadan önce aşağıdaki üst düzey adımları uygulamamız gerekiyor.
- Önceki bölümlerde kullanılan 'DemoUygulamamızı' kullanın. Bu test edilmesi gereken uygulamamız olacaktır.
- DemoApplication'a yeni bir sınıf ekleyeceğiz. Bu sınıf, ' adlı bir dize içerecektir.Guru99 – ASP.NET.' Bu dize, test projemizde test edilecektir.
- Son olarak, bir test projesi oluşturacağız. Bu proje, ASP.NET uygulamasını test etmek için kullanılacaktır.
Öyleyse yukarıdaki genel adımları izleyelim ve test işleminin nasıl uygulanacağını görelim.
) 1 Adım DemoApplication'ın Visual Studio'da açık olduğundan emin olun.
) 2 Adım Şimdi DemoApplication'a yeni bir sınıf ekleyelim. Bu sınıf, ' adlı bir dize içerecektir.Guru99 – ASP.NET.' Bu dize, test projemizde test edilecektir.
Yeni bir sınıf eklemek için aşağıdaki adımı izleyin.
- Visual Studio'da Çözüm Gezgini'nde 'DemoApplication'a sağ tıklayın.
- Bağlam menüsünden Ekle->Sınıf seçeneğini seçin.
) 3 Adım Bu adımda,
- Yeni sınıfa 'Tutorial.cs' adını verin.
- Dosyayı DemoUygulamasına eklemek için 'Ekle' düğmesine tıklayın.
Artık “DemoApplication” dosyasına yeni bir sınıf eklendi.
) 4 Adım “DemoApplication” klasöründen yeni Tutorial.cs dosyasını açın. “Guru99 – ASP.NET.”
Dosyayı açmak için Çözüm Gezgini'ndeki Tutorial.cs dosyasına çift tıklayın.
Dosyada önceden yazılmış bazı varsayılan kodlar bulunur. Bu kodla uğraşmayın, sadece aşağıdaki kod satırını ekleyin.
namespace DemoApplication { public class Tutorial { public String Name; public Tutorial() { Name = "Guru99 - ASP.Net"; } } }
Code Açıklama:-
- Name değişkeni string türündedir.
- Son olarak, Tutorial sınıfının yapıcı metodunda, Name değişkenine değer atayın. Değer, "Guru99 – ASP.NET”
) 5 Adım Şimdi demo.aspx dosyasına gidin ve " metnini görüntülemek için aşağıdaki kod satırlarını ekleyin.Guru99 – ASP.NET.”
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <% DemoApplication.Tutorial tp=new DemoApplication.Tutorial();%> <%=tp.Name%> </div> </form> </body> </html>
Code Açıklama:-
- İlk satır, 'Tutorial' sınıfından bir nesne oluşturur. Bu, sınıflar ve nesnelerle çalışırken atılacak ilk adımdır. Nesneye verilen isim 'tp'dir.
- Son olarak demo.aspx dosyasından 'tutorial.cs' adını veriyoruz. Ad değişkeninin değerini görüntüler.
Yukarıdaki programı Visual Studio'da çalıştırdığınızda aşağıdaki çıktıyı alacaksınız.
Çıktı:-
Çıktıda şu mesajı görüyorsunuz: “Guru99 – ASP.NET” görüntülendi.
) 6 Adım Şimdi test projemizi Demo Uygulamasına ekleyelim. Bu işlem Visual Studio yardımıyla yapılır.
- Çözüm – DemoApplication'a sağ tıklayın.
- Bağlam menüsünde 'Yeni Proje' seçeneğini seçin.
) 7 Adım Adım, Birim Testi projesinin demo uygulamasına eklenmesini içerir.
- Sol taraftaki panelden 'Test' olarak öğe türüne tıklayın.
- İletişim kutusunun orta kısmında görünen listeden 'Birim Test Projesi' öğesini seçin.
- Test projesine bir ad verin. Bizim durumumuzda verilen isim 'DemoTest'tir.
- Son olarak 'Tamam' butonuna tıklayın.
Sonunda DemoTest projesinin çözüm gezginine eklendiğini göreceksiniz. Bununla, UnitTest1.cs, özellikler vb. gibi diğer dosyaların da varsayılan olarak oluşturulduğunu görebilirsiniz.
Test Projesini Çalıştırma
Önceki bölümde oluşturulan test projesi, ASP.NET uygulamamızı test etmek için kullanılır. Aşağıdaki adımlarda, test projesini nasıl çalıştıracağımızı göreceğiz.
- İlk adım, ASP.NET projesine bir referans eklemek olacaktır. Bu adım, test projesinin ASP.NET projesine erişebilmesi için gerçekleştirilir.
- Daha sonra test kodumuzu yazacağız.
- Son olarak testi Visual Studio kullanarak çalıştıracağız.
) 1 Adım Demo Uygulamamızı test etmek için öncelikle test projesinin Demo Uygulamasına referans vermesi gerekmektedir. Demo.aspx çözümüne bir başvuru ekleyin.
- Demo Testi projesine sağ tıklayın
- Menüden Ekle->Referans seçeneğini seçin.
) 2 Adım Bir sonraki adım DemoApplication'a bir referans eklemektir.
- İletişim kutusunun sol tarafındaki Projeler seçeneğini seçin
- DemoApplication'ın yanındaki onay kutusunu tıklayın
- 'Tamam' düğmesine tıklayın.
Bu, demotest projesinin DemoUygulamamızı test etmesine olanak tanıyacaktır.
) 3 Adım Şimdi test kodunu test projemize ekleme zamanı geldi.
- Bunun için öncelikle Çözüm Gezgini'ndeki UnitTest1 (UnitTest1 dosyası, Test projesi oluşturulduğunda Visual Studio tarafından otomatik olarak eklenir) dosyasına çift tıklayın.
- Bu dosya, ASP.NET projesini test etmek için çalıştırılacak dosyadır.
Visual Studio tarafından UnitTest1.cs dosyasına eklenen aşağıdaki kodu göreceksiniz. Bu, test projesinin çalışması için gereken temel koddur.
) 4 Adım Sonraki adım, " dizesini test etmek için kullanılan kodu eklemektir."Guru99 – ASP.NET.”
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using DemoApplication; namespace DemoTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { Tutorial tp = new Tutorial(); Assert.AreEqual(tp.Name,"Guru99 - ASP.Net"); } } }
- Öğretici türünde 'tp' adında yeni bir nesne oluşturun
- .NET'te Assert.AreEqual metodu, bir değerin başka bir şeye eşit olup olmadığını test etmek için kullanılır. Dolayısıyla, bizim örneğimizde tp.Name değerini başka bir değerle karşılaştırıyoruz. Guru99 – ASP.NET.
) 5 Adım Şimdi test projemizi çalıştıralım. Bunun için Test -> Çalıştır -> Tüm Testler menü seçeneğine gitmemiz gerekiyor.
Çıktı:-
Visual Studio'da bir test Explorer penceresi görünecektir. Bu, yukarıdaki sonucu gösterecek ve Visual Studio'da başarılı bir testin çalıştırıldığını gösterecektir.
Kullanacağınız MSTest Nitelikleri ve Doğrulama İfadeleri
MKS Microsoft.VisualStudio.TestTools.UnitTesting ad alanı, ASP.NET birim testlerinin çoğunu kapsayan küçük bir dizi özellik ve doğrulama içerir. Bunları önceden öğrenmek, daha sonraki tüm testleri okumayı ve sürdürmeyi kolaylaştırır.
- [TestSınıfı] – Bu özellik, sınıfı testlerin yer aldığı bir kapsayıcı olarak işaretler. MSTest, keşif aşamasında bu özelliğe sahip sınıfları tarar.
- [TestMethod] – parametresiz, herkese açık bir metodu ayrı bir test olarak işaretler. Bu metot void, Task veya ValueTask döndürür.
- [TestBaşlatma] / [TestTemizleme] – Her test yönteminden önce ve sonra çalıştırın. Bunları, sahte bir depo veya bellek içi bağlam gibi paylaşılan kurulumlar oluşturmak ve kaldırmak için kullanın.
- [Sınıf Başlatma] / [Sınıf Temizleme] – Tüm sınıf için bir kez çalıştırılır. Kurulum maliyetli olduğunda, örneğin test veritabanına veri eklerken kullanışlıdırlar.
- [VeriSatırı] ve [VeriTestMetodu] – Tek bir test yönteminin birden fazla durumu kapsayabilmesi için parametrelendirilmiş girdiler sağlayın.
Her test metodunun içinde, Assert sınıfı sonucu kontrol eder. Yaygın çağrılar arasında değer karşılaştırmaları için Assert.AreEqual, boolean'lar için Assert.IsTrue ve Assert.IsFalse, referanslar için Assert.IsNull ve Assert.IsNotNull ve beklenen istisnalar için Assert.ThrowsException bulunur. Kurulum, çağrı ve doğrulamanın görsel olarak ayrı kalması için her testi Arrange, Act, Assert kalıbını kullanarak yapılandırın. Bu düzen, başarısız olan testlerin hata ayıklamasını kolaylaştırır çünkü başarısız olan satır neredeyse her zaman en alttaki tek Assert satırıdır.
ASP.NET için MSTest, NUnit ve xUnit Karşılaştırması
.NET ekosistemine üç test çerçevesi hakimdir. Her biri Visual Studio içinde çalışır ve dotnet test ile entegre olur, bu nedenle aralarındaki fark çoğunlukla stil, topluluk desteği ve varsayılan davranıştan kaynaklanır.
- MST testi – tarafından gönderildi Microsoft ve bu eğitimde daha önce kullanılan Visual Studio Birim Testi Projesi şablonu önceden yüklenmiş olarak gelir. Bir ekip birim testine yeni başladığında en güvenli varsayılan seçenektir. Microsoft yığını.
- NUnit – üçünün en eskisi, aslen şuradan aktarılmıştı: JUnitZengin bir kısıtlama modeli, TestCase ve TestCaseSource aracılığıyla parametrelendirilmiş testler ve her .NET sürümünde olgun destek sunar.
- xUnit.net – ASP.NET Core ve Entity Framework Core ekipleri tarafından dahili olarak kullanılır. SetUp metodunu kurucu metot ve IDisposable ile değiştirir, davranış başına bir test sınıfı kullanılmasını teşvik eder ve [TestMethod] yerine [Fact] ve [Theory] kullanır.
Her üç çerçeve de testleri öznitelikler aracılığıyla keşfeder, dotnet test komutuyla çalıştırır ve CI işlem hatları gibi sistemlerin kullanabileceği trx veya xUnit XML raporları üretir. Azure DevOps, GitHub Actions ve Jenkins Doğrudan tüketilebilir. İlk ASP.NET projesi için MSTest'i kullanmak, araç zincirini basit tutar. Daha zengin parametreleme isteyen veya zaten ASP.NET Core kullanan ekipler, oluşturulduğu çerçeveyle tutarlılık sağlamak için genellikle xUnit'i tercih eder.
ASP.NET Uygulamaları için Birim Testinin En İyi Uygulamaları
Birkaç temel alışkanlığa bağlı kalmak, bir ASP.NET projesinin ömrü boyunca bir test paketinin hızlı, güvenilir ve kullanışlı kalmasını sağlar.
- Her yöntem için yalnızca bir davranışı test edin. Birbirinden bağımsız birçok şeyi doğrulayan bir test, birçok nedenden dolayı başarısız olur ve düzeltilmesi daha uzun sürer.
- Niyetten sonra testlere isim verin. MethodUnderTest_Scenario_ExpectedResult gibi bir kalıp, Test Gezgini'nin sınıfın okunabilir bir spesifikasyonunu çıktı olarak vermesini sağlar.
- Cihazı dış sistemlerden izole edin. Dosya, ağ ve veritabanı çağrılarını arayüzlerin arkasına sarın ve testin gerçek bağımlılığa ulaşmasını engellemek için sahte veya taklit nesneler kullanın.
- Testleri hızlı tutun. Tüm birim test paketinin saniyeler içinde tamamlanmasını hedefleyin. Yavaş testler atlanır ve atlanan testler hataları gizler.
- Düzenleme, Harekete Geçme, İddia Etme düzenini izleyin. Aralarında boş satırlar bulunan üç kısa blok, niyeti belirtir ve hatalı satırları kolayca fark etmeyi sağlar.
- Her commit işleminde testler çalıştırın. `dotnet test` komutunu bir CI işlem hattına entegre edin, böylece hatalı bir test, gönderimi değil, birleştirmeyi engellesin.ping üretime.
- Track kod kapsamına ulaşın, ancak bunun peşinden koşmayın. Kapsama alanı denenmemiş yolları öne çıkarıyor ancak yüksek sayı tek başına kaliteyi garanti etmiyor. RevEksik satırların aslında ne işe yaradığını görün.
Birlikte uygulandığında, yukarıda oluşturulan DemoTest projesi, her güncellemede hataları yakalayan, gelecekteki geliştiriciler için davranışları belgeleyen ve bir ASP.NET uygulamasını yeniden düzenlerken güven veren bir test paketinin temelini oluşturur.


















