Visual Studio kullanarak .NET sınıf kitaplığını test edin

Önemli

Microsoft, Mac için Visual Studio kullanımdan kaldırıldığını duyurdu. Mac için Visual Studio artık 31 Ağustos 2024'den itibaren desteklenmeyecektir. Alternatifler şunlardır:

  • C# Dev Kit ile Visual Studio Code ve .NET MAUI ve Unity gibi ilgili uzantılar.
  • Mac'teki bir VM'de Windows üzerinde çalışan Visual Studio.
  • Bulutta bir VM'de Windows üzerinde çalışan Visual Studio.

Daha fazla bilgi için bkz. Mac için Visual Studio kullanımdan kaldırma duyurusu.

Bu öğreticide, bir çözüme test projesi ekleyerek birim testlerini otomatikleştirme adımları gösterilmektedir.

Ön koşullar

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çevesinden biridir. Diğerleri xUnit ve nUnit'tir.

  1. Mac için Visual Studio'ı başlatın.

  2. ClassLibraryProjects oluşturduğunuz çözümü Mac için Visual Studio kullanarak .NET sınıf kitaplığı oluşturma bölümünde açın.

  3. Çözüm panelinde ctrl tuşunu basılı tutarak çözüme ClassLibraryProjects tıklayın ve Yeni Proje Ekle'yi>seçin.

  4. Yeni Proje iletişim kutusunda Web ve Konsol düğümünden Testler'iseçin. MSTest Projesini ve ardından İleri'yi seçin.

    Visual Studio Mac New Project dialog creating test project

  5. Hedef Çerçeve olarak .NET 5.0'ı ve ardından İleri'yi seçin.

  6. Yeni projeye "StringLibraryTest" adını verin ve Oluştur'u seçin.

    Visual Studio Mac New Project dialog providing project name

    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:

    [TestClass] ile etiketlenmiş bir test sınıfında [TestMethod] ile etiketlenen her yöntem, birim testi çalıştırıldığında otomatik olarak yürütülür.

Proje başvurusu ekleme

Test projesinin sınıfıyla StringLibrary çalışması için projeye bir başvuru StringLibrary ekleyin.

  1. Çözüm panelinde StringLibraryTest altındaki Bağımlılıklar'a ctrl tuşunu basılı tutarak tıklayın. Bağlam menüsünden Başvuru Ekle'yi seçin.

  2. Başvurular iletişim kutusunda StringLibrary projesini seçin. Tamam'ı seçin.

    Visual Studio Mac Edit References dialog

Birim testi yöntemleri ekleme ve çalıştırma

Visual Studio bir birim testi çalıştırdığında, özniteliğiyle işaretlenmiş bir sınıfta özniteliğiyle TestMethodAttributeTestClassAttribute işaretlenmiş her yöntemi yürütür. İlk hata bulunduğunda veya yöntemin içerdiği tüm testler başarılı olduğunda bir test yöntemi sona erer.

En yaygın testler sınıfın üyelerini Assert çağırır. Birçok onay yöntemi, biri beklenen test sonucu, diğeri gerçek test sonucu olan en az iki parametre içerir. Sınıfın Assert en sık adlandırılan yöntemlerinden bazıları aşağıdaki tabloda gösterilmiştir:

Assert yöntemleri Function
Assert.AreEqual İki değerin veya nesnenin eşit olduğunu doğrular. Değerler veya nesneler eşit değilse onay başarısız olur.
Assert.AreSame İki nesne değişkeninin aynı nesneye başvurduğunu doğrular. Değişkenler farklı nesnelere başvuruda bulunursa onay başarısız olur.
Assert.IsFalse Bir koşulun olduğunu falsedoğrular. Koşul ise trueonay başarısız olur.
Assert.IsNotNull Bir nesnenin olmadığını nulldoğrular. nesnesi ise nullonay başarısız olur.

Oluşturması Assert.ThrowsException beklenen özel durum türünü belirtmek için bir test yönteminde yöntemini de kullanabilirsiniz. Belirtilen özel durum oluşturulmazsa test başarısız olur.

yöntemini test etmek StringLibrary.StartsWithUpper için büyük harf karakterle başlayan bir dizi dize sağlamak istiyorsunuz. Bu durumlarda yönteminin döndürülmesini true beklersiniz, böylece yöntemini çağırabilirsiniz Assert.IsTrue . Benzer şekilde, büyük harf karakterden başka bir şeyle başlayan bir dizi dize sağlamak istiyorsunuz. Bu durumlarda yönteminin döndürülmesini false beklersiniz, böylece yöntemini çağırabilirsiniz Assert.IsFalse .

Kitaplık yönteminiz dizeleri işlediğinden, boş bir dizeyi (String.Empty), karakterleri olmayan ve 0 olan geçerli bir dizeyi ve Length başlatılmamış bir null dizeyi başarıyla işlediğinden de emin olmak istersiniz. Doğrudan statik bir yöntem olarak çağırabilir StartsWithUpper ve tek String bir bağımsız değişken geçirebilirsiniz. Alternatif olarak, öğesine atanmış nullbir string değişkende uzantı yöntemi olarak da çağırabilirsinizStartsWithUpper.

Her biri bir dize dizisindeki her öğe için bir Assert yöntem çağıran üç yöntem tanımlayacaksınız. Test hatası durumunda görüntülenecek bir hata iletisi belirtmenize olanak tanıyan bir yöntem aşırı yüklemesini çağıracaksınız. İleti, hataya neden olan dizeyi tanımlar.

Test yöntemlerini oluşturmak için:

  1. UnitTest1.cs dosyasını açın ve kodu aşağıdaki kodla değiştirin:

    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öntemindeki büyük harflerin testinde TestStartsWithUpper Yunanca büyük alfa (U+0391) ve Kiril büyük harf EM (U+041C) bulunur. yöntemindeki küçük harfli karakterlerin testinde TestDoesNotStartWithUpper Yunanca küçük alfa (U+03B1) ve Kiril küçük harfi Ghe (U+0433) bulunur.

  2. Menü çubuğunda Dosya>Farklı Kaydet'i seçin. İletişim kutusunda Kodlama'nın Unicode (UTF-8) olarak ayarlandığından emin olun.

    Visual Studio Save File As dialog

  3. Mevcut dosyayı değiştirmek isteyip istemediğiniz sorulduğunda Değiştir'i seçin.

    Kaynak kodunuzu UTF8 ile kodlanmış bir dosya olarak kaydedemezseniz, Visual Studio bunu ASCII dosyası olarak kaydedebilir. Bu durumda, çalışma zamanı ASCII aralığının dışındaki UTF8 karakterlerinin kodunu doğru bir şekilde çözmez ve test sonuçları doğru olmaz.

  4. Ekranın sağ tarafındaki Birim Testleri panelini açın. Menüden Testleri Görüntüle'yi>seçin.

  5. Paneli açık tutmak için Dock simgesine tıklayın.

    Visual Studio for Mac Unit Tests panel dock icon

  6. Tümünü Çalıştır düğmesine tıklayın.

    Tüm testler geçer.

    Visual Studio for Mac expected test passes

Test hatalarını işleme

Test temelli geliştirme (TDD) yapıyorsanız, önce testleri yazarsınız ve ilk kez çalıştırdığınızda başarısız olurlar. Ardından uygulamaya testin başarılı olmasını sağlayan kod eklersiniz. Bu öğreticide, doğruladığınız uygulama kodunu yazdıktan sonra testi oluşturdunuz ve testin başarısız olduğunu görmediniz. Testin başarısız olmasını beklediğiniz zaman başarısız olduğunu doğrulamak için test girişine geçersiz bir değer ekleyin.

  1. yöntemindeki words diziyi TestDoesNotStartWithUpper "Error" dizesini içerecek şekilde değiştirin. Visual Studio, testleri çalıştırmak için bir çözüm oluşturulduğunda açık dosyaları otomatik olarak kaydettiğinden dosyayı kaydetmeniz gerekmez.

    string[] words = { "alphabet", "Error", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство",
                       "1234", ".", ";", " " };
    
  2. Testleri yeniden çalıştırın.

    Bu kez, Test Gezgini penceresi iki testin başarılı ve birinin başarısız olduğunu gösterir.

    Test Explorer window with failing tests

  3. ctrl tuşunu basılı tutarak başarısız olan teste TestDoesNotStartWithUppertıklayın ve bağlam menüsünden Sonuç Tuş Takımını Göster'i seçin.

    Sonuçlar bölmesi, onay tarafından oluşturulan iletiyi görüntüler: "Assert.IsFalse başarısız oldu. 'Error' için bekleniyor: false; actual: True". Hata nedeniyle, "Hata" sonrasında dizideki hiçbir dize test edilmedi.

    Test Explorer window showing the IsFalse assertion failure

  4. 1. adımda eklediğiniz "Error" dizesini kaldırın. Testi yeniden çalıştırın ve testler geçer.

Kitaplığın Sürüm sürümünü test edin

Artık tüm testler kitaplığın Hata Ayıklama derlemesi çalıştırılırken geçtiğine göre, kitaplığın Release derlemesine karşı testleri ek bir süre çalıştırın. Derleyici iyileştirmeleri de dahil olmak üzere çeşitli faktörler bazen Hata Ayıklama ve Yayın derlemeleri arasında farklı davranışlar üretebilir.

Yayın derlemesini test etmek için:

  1. Visual Studio araç çubuğunda Derleme yapılandırmasını Hata Ayıkla yerine Yayın olarak değiştirin.

    Visual Studio toolbar with release build highlighted

  2. Çözüm panelinde StringLibrary projesine ctrl tuşunu basılı tutarak tıklayın ve kitaplığı yeniden derlemek için bağlam menüsünden Oluştur'u seçin.

    StringLibrary context menu with build command

  3. Birim testlerini yeniden çalıştırın.

    Testler geçer.

Testlerde hata ayıklama

IDE'niz olarak Mac için Visual Studio kullanıyorsanız, Öğretici: Birim testi projenizi kullanarak kodda hata ayıklamak için Mac için Visual Studio kullanarak bir .NET konsol uygulamasında hata ayıklama bölümünde gösterilen işlemi kullanabilirsiniz. ShowCase uygulama projesini başlatmak yerine StringLibraryTestsprojesine ctrl tuşunu basılı tutarak tıklayın ve bağlam menüsünden Projede Hata Ayıklamayı Başlat'ı seçin.

Visual Studio, test projesini hata ayıklayıcı ekli olarak başlatır. Yürütme, test projesine veya temel alınan kitaplık koduna eklediğiniz herhangi bir kesme noktasında durur.

Ek kaynaklar

Sonraki adımlar

Bu öğreticide bir sınıf kitaplığını birim olarak test ettiniz. Kitaplığı NuGet'e paket olarak yayımlayarak başkalarının kullanımına sunabilirsiniz. Nasıl yapılacağını öğrenmek için NuGet öğreticisini izleyin:

Bir kitaplığı NuGet paketi olarak yayımlarsanız, diğerleri bunu yükleyip kullanabilir. Nasıl yapılacağını öğrenmek için NuGet öğreticisini izleyin:

Kitaplığın paket olarak dağıtılması gerekmez. Bunu kullanan bir konsol uygulamasıyla paketlenebilir. Konsol uygulamasını yayımlamayı öğrenmek için bu serinin önceki öğreticisine bakın: