Visual Studio kullanarak .NET sınıf kitaplığı test etme
Bu öğreticide, bir çözüme test projesi ekleyerek birim testinin nasıl otomatikleştirilmesi gösterilmektedir.
Önkoşullar
- bu öğretici, Mac için Visual Studio kullanarak bir .net sınıf kitaplığı oluşturmabölümünde oluşturduğunuz çözümle birlikte kullanılır.
Birim testi projesi oluşturma
Birim testleri geliştirme ve yayımlama sırasında otomatik yazılım testi sağlar. MSTest , aralarından seçim yapabileceğiniz üç test çerçevelerinden biridir. Diğerleri xUnit ve NUnit' dir.
Mac için Visual Studio başlatın.
ClassLibraryProjectsMac için Visual Studio kullanarak .net sınıf kitaplığı oluşturmabölümünde oluşturduğunuz çözümü açın.çözüm panelinde, çözüme ctrl-tıklayın
ClassLibraryProjectsve > yeni Project ekle ' yi seçin.yeni Project iletişim kutusunda Web ve konsol düğümünden testler ' i seçin. MSTest Project sonra ileri ' yi seçin.
Hedef çerçeve olarak .NET 5,0 ' i seçin ve İleri ' yi seçin.
"StringLibraryTest" adlı yeni projeyi adlandırın ve Oluştur' u seçin.
Visual Studio aşağıdaki kodla bir sınıf dosyası oluşturur:
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace StringLibraryTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { } } }Birim testi şablonu tarafından oluşturulan kaynak kodu aşağıdakileri yapar:
- Microsoft.VisualStudio.TestTools.UnitTestingBirim testi için kullanılan türleri içeren ad alanını içeri aktarır.
- TestClassAttributeÖzniteliği
UnitTest1sınıfına uygular. - TestMethodAttributeÖzniteliğini öğesine uygular
TestMethod1.
[TestClass] ile etiketlenmiş bir test sınıfında [TestMethod] etiketli her bir yöntem, birim testi çalıştırıldığında otomatik olarak yürütülür.
Proje başvurusu Ekle
Test projesinin sınıfla çalışması için StringLibrary projeye bir başvuru ekleyin StringLibrary .
Çözüm panelinde, stringlibrarytest altındaki Bağımlılıklar ' a CTRL tuşunatıklayın. Bağlam menüsünden Başvuru Ekle ' yi seçin.
Başvurular Iletişim kutusunda StringLibrary projesini seçin. Tamam’ı seçin.
Birim testi yöntemleri ekleme ve çalıştırma
Visual Studio bir birim testi çalıştırdığında, özniteliğiyle TestMethodAttribute işaretlenmiş bir sınıfta özniteliğiyle işaretlenmiş her metodu yürütür TestClassAttribute . İlk hata bulunduğunda veya yöntemde bulunan tüm testler başarılı olduğunda bir test yöntemi sonlanır.
En yaygın testler, sınıfının üyelerini çağırır Assert . Birçok onaylama yöntemi, biri beklenen test sonucu ve diğeri de gerçek test sonucu olan en az iki parametre içerir. AssertSınıfın en sık çağrılan yöntemlerin bazıları aşağıdaki tabloda gösterilmiştir:
| Onaylama yöntemleri | İşlev |
|---|---|
Assert.AreEqual |
İki değerin veya nesnenin eşit olduğunu doğrular. Değerler veya nesneler eşitse onaylama başarısız olur. |
Assert.AreSame |
İki nesne değişkeninin aynı nesneye başvurmasını doğrular. Değişkenler farklı nesnelere başvuru yaptığında onaylama başarısız olur. |
Assert.IsFalse |
Bir koşulun olduğunu doğrular false . Koşul ise onaylama başarısız olur true . |
Assert.IsNotNull |
Bir nesnenin olmadığını doğrular null . Nesne ise onaylama başarısız olur null . |
Assert.ThrowsExceptionYöntemi bir test yönteminde, oluşturması beklenen özel durum türünü belirtmek için de kullanabilirsiniz. Belirtilen özel durum atılmazsa, test başarısız olur.
Yöntemi test ederken StringLibrary.StartsWithUpper , büyük harf karakteriyle başlayan bir dizi dize sağlamak istersiniz. Yöntemi bu durumlarda Return olarak beklediğinizi ve true Assert.IsTrue yöntemi çağırabilirsiniz. Benzer şekilde, büyük harfli bir karakter ile başlayan bir dizi dize sağlamak istersiniz. Yöntemi bu durumlarda Return olarak beklediğinizi ve false Assert.IsFalse yöntemi çağırabilirsiniz.
Kitaplık yönteminiz dizeleri yaptığından, ayrıca boş bir dizeyi ( String.Empty )başarılı bir şekilde (), karakteri olmayan ve 0 olan geçerli bir dize Length ve başlatılmamış bir dize de işlemesini sağlamak istersiniz null . StartsWithUpperDoğrudan statik bir yöntem olarak çağırabilir ve tek bir String bağımsız değişken geçirebilirsiniz. Ya da StartsWithUpper öğesine atanan bir değişkende bir genişletme yöntemi olarak çağırabilirsiniz string null .
Her biri Assert bir dize dizisindeki her öğe için bir yöntem çağıran üç yöntem tanımlayacaksınız. Test hatası durumunda görüntülenecek bir hata iletisi belirtmenize imkan tanıyan bir yöntem aşırı yüklemesi çağıracaksınız. İleti, hataya neden olan dizeyi tanımlar.
Test yöntemleri oluşturmak için:
UnitTest1. cs dosyasını açın ve kodu şu kodla değiştirin:
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using UtilityLibraries; namespace StringLibraryTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestStartsWithUpper() { // Tests that we expect to return true. string[] words = { "Alphabet", "Zebra", "ABC", "Αθήνα", "Москва" }; foreach (var word in words) { bool result = word.StartsWithUpper(); Assert.IsTrue(result, String.Format("Expected for '{0}': true; Actual: {1}", word, result)); } } [TestMethod] public void TestDoesNotStartWithUpper() { // Tests that we expect to return false. string[] words = { "alphabet", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство", "1234", ".", ";", " " }; foreach (var word in words) { bool result = word.StartsWithUpper(); Assert.IsFalse(result, String.Format("Expected for '{0}': false; Actual: {1}", word, result)); } } [TestMethod] public void DirectCallWithNullOrEmpty() { // Tests that we expect to return false. string[] words = { string.Empty, null }; foreach (var word in words) { bool result = StringLibrary.StartsWithUpper(word); Assert.IsFalse(result, String.Format("Expected for '{0}': false; Actual: {1}", word == null ? "<null>" : word, result)); } } } }Yöntemdeki büyük harfli karakterlerin testi,
TestStartsWithUpperYunanca Büyük Harf Alpha (u + 0391) ve Kiril Büyük harf em (u + 041C) içerir. Yöntemdeki küçük harfli karakterlerin testiTestDoesNotStartWithUpperYunanca Küçük Harf Alpha (u + 03B1) ve Kiril Küçük harf GHE (u + 0433) içerir.Menü çubuğunda Dosya > farklı kaydet' i seçin. İletişim kutusunda, kodlamanın UNICODE (UTF-8) olarak ayarlandığından emin olun.
Var olan dosyayı değiştirmek isteyip istemediğiniz sorulduğunda Değiştir' i seçin.
kaynak kodunuzu UTF8 kodlu bir dosya olarak kaydedemeyebilirsiniz Visual Studio, ascıı dosyası olarak kaydedebilir. Söz konusu olduğunda, çalışma zamanı, ASCII aralığının dışında UTF8 karakterlerinin kodunu doğru şekilde çözmez ve test sonuçları doğru olmayacaktır.
Ekranın sağ tarafındaki birim testleri panelini açın. Menüden > Testleri görüntüle ' yi seçin.
Paneli açık tutmak için Yerleştir simgesine tıklayın.
Tümünü Çalıştır düğmesine tıklayın.
Tüm testler geçer.
Test başarısızlıklarını işle
Test odaklı geliştirme (TDD) yapıyorsanız, önce testleri yazarsınız ve ilk kez çalıştırdığınızda başarısız olur. Sonra, uygulamayı başarılı hale getiren uygulamaya kod eklersiniz. Bu öğreticide, doğrulaması yaptığı uygulama kodunu yazdıktan sonra test başarısız olduğunu görmediyseniz testi oluşturdunuz. Başarısız olması beklendiğinde testin başarısız olduğunu doğrulamak için, test girişine geçersiz bir değer ekleyin.
wordsYöntemdeki diziyi,TestDoesNotStartWithUpper"Error" dizesini içerecek şekilde değiştirin. testleri çalıştırmak için bir çözüm oluşturulduğunda Visual Studio açık dosyaları otomatik olarak kaydettiği için dosyayı kaydetmeniz gerekmez.string[] words = { "alphabet", "Error", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство", "1234", ".", ";", " " };Testleri yeniden çalıştırın.
Bu kez, Test Gezgini penceresi iki testin başarılı olduğunu ve bir başarısız olduğunu gösterir.
CTRL tuşunabasıp başarısız teste tıklayın
TestDoesNotStartWithUpperve bağlam menüsünden sonuçlar panelini göster ' i seçin.Sonuç panelinde, "onay. IsFalse başarısız oldu" onay tarafından oluşturulan ileti görüntülenir. ' Error ' bekleniyor: false; gerçek: true ". Hata nedeniyle "hata" sonunda dizide hiçbir dize sınanmadı.
Adım 1 ' de eklediğiniz "Error" dizesini kaldırın. Testi ve test geçişini yeniden çalıştırın.
Kitaplığın yayın sürümünü test etme
Artık, kitaplığın hata ayıklama derlemesini çalıştırırken testlerin başarılı olduğuna göre, bu testleri kitaplığın yayın derlemesi için ek bir zaman çalıştırın. Derleyici iyileştirmeleri dahil olmak üzere bir dizi etken bazen hata ayıklama ve yayın yapıları arasında farklı davranışlar üretebilir.
Yayın derlemesini test etmek için:
Visual Studio araç çubuğunda, derleme yapılandırmasını Debug iken Release olarak değiştirin.
Çözüm panelinde, StringLibrary projesine CTRL-tıklayın ve bağlam menüsünden Oluştur ' u seçerek kitaplığı yeniden derleyin.
Birim testlerini yeniden çalıştırın.
Testler geçer.
Hata ayıklama testleri
ıde 'niz olarak Mac için Visual Studio kullanıyorsanız, öğreticide gösterilen aynı süreci kullanabilirsiniz: birim test projenizi kullanarak kodda hata ayıklamak için Mac için Visual Studio kullanarak bir .net konsol uygulamasında hata ayıklama . gösterimi uygulama projesini başlatmak yerine stringlibrarytests projesine ctrl tuşunu basılıolarak tıklayın ve bağlam menüsünden hata ayıklamayı başlat Project seçin.
Visual Studio, test projesini hata ayıklayıcı ekli olarak başlatır. Yürütme, test projesine veya temeldeki kitaplık koduna eklediğiniz herhangi bir kesme noktasında durur.
Ek kaynaklar
Sonraki adımlar
Bu öğreticide, birim bir sınıf kitaplığı test edilmiştir. bir paket olarak NuGet , kitaplığı başkaları tarafından kullanılabilir hale getirebilirsiniz. nasıl yapılacağını öğrenmek için NuGet öğreticisini izleyin:
bir kitaplığı NuGet paketi olarak yayımlarsanız, diğerleri onu yükleyebilir ve kullanabilir. nasıl yapılacağını öğrenmek için NuGet öğreticisini izleyin:
Bir kitaplığın paket olarak dağıtılması gerekmez. Onu kullanan bir konsol uygulamasıyla paketlenmiş olabilir. Bir konsol uygulamasını yayımlamayı öğrenmek için bu serideki önceki öğreticiye bakın: