Öğretici: .NET sınıf kitaplığını .NET ile test etmek için Visual Studio

Bu öğreticide, bir çözüme test projesi ekleyerek birim testini otomatikleştirme işlemi gösterir.

Önkoşullar

Birim testi projesi oluşturma

Birim testleri, geliştirme ve yayımlama sırasında otomatik yazılım testi sağlar. MSTest, 3 test çerçevesinden birini seçebilirsiniz. Diğerleri xUnit ve nUnit'tir.

  1. Visual Studio’yu çalıştırın.

  2. ClassLibraryProjects kullanarak .NET sınıf kitaplığı oluşturma'da oluşturduğunuz Visual Studio.

  3. Çözüme "StringLibraryTest" adlı yeni bir birim testi projesi ekleyin.

    1. Yeni proje ekle'yi seçerek Çözüm Gezgini > çözümüne sağ tıklayın.

    2. Yeni proje ekle sayfasında arama kutusuna mstest yazın. Dil listesinden C# Visual Basic seçin ve ardından Platform listesinden Tüm platformlar'ı seçin.

    3. MSTest Test Project ve ardından Sonraki'yi seçin.

    4. Yeni projenizi yapılandır sayfasında, Yeni projenizin adı kutusuna StringLibraryTest Project girin. Ardından, Sonraki'yi seçin.

    5. Ek bilgiler sayfasında, Framework kutusunda .NET 6 (Uzun süreli destek) öğesini seçin. Ardından Oluştur’u seçin.

  4. Visual Studio projeyi oluşturur ve sınıf dosyasını kod penceresinde aşağıdaki kodla açar. Kullanmak istediğiniz dil gösterilmezse, sayfanın üst kısmında dil seçiciyi değiştirebilirsiniz.

    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace StringLibraryTest
    {
        [TestClass]
        public class UnitTest1
        {
            [TestMethod]
            public void TestMethod1()
            {
            }
        }
    }
    
    Imports Microsoft.VisualStudio.TestTools.UnitTesting
    
    Namespace StringLibraryTest
        <TestClass>
        Public Class UnitTest1
            <TestMethod>
            Sub TestSub()
    
            End Sub
        End Class
    End Namespace
    

    Birim testi şablonu tarafından oluşturulan kaynak kod şunları yapar:

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

Proje başvurusu ekleme

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

  1. Bu Çözüm Gezgini StringLibraryTest projesinin Bağımlılıklar düğümüne sağ tıklayın ve bağlam menüsünden Project Başvurusu Ekle'yi seçin.

  2. Başvuru Yöneticisi iletişim kutusunda Projeler düğümünü genişletin ve StringLibrary'nin yanındaki kutuyu seçin. Derlemeye bir başvuru StringLibrary eklemek, derleyicinin StringLibraryTest projesini derlerken StringLibrary yöntemlerini bulmalarına olanak sağlar.

  3. Tamam’ı seçin.

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

Bir Visual Studio testi çalıştırıyorsa, özniteliğiyle işaretlenmiş bir sınıfta özniteliğiyle işaretlenmiş TestMethodAttribute her yöntemi TestClassAttribute yürütür. Test yöntemi, ilk hata bulunursa veya yönteminde yer alan tüm testler başarılı olduğunda sona erer.

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

Assert yöntemleri İşlev
Assert.AreEqual İki değerin veya nesnelerin eşit olduğunu doğrular. Değerler veya nesneler eşit olmazsa onay başarısız olur.
Assert.AreSame İki nesne değişkeninin aynı nesneye başvurarak doğrular. Değişkenler farklı nesnelere başvurursa onay başarısız olur.
Assert.IsFalse Bir koşulun olduğunu false doğrular. Koşul ise onay başarısız true olur.
Assert.IsNotNull Bir nesnenin olmadığını null doğrular. Nesnesi ise onaylama başarısız null olur.

Ayrıca, bir test Assert.ThrowsException yönteminde yöntemini kullanarak atacakları özel durum türünü belirtebilirsiniz. Belirtilen özel durum yoksa test başarısız olur.

yöntemini test StringLibrary.StartsWithUpper etmek için büyük harf karakteriyle başlayan bir dizi dize sağlamak istiyor siniz. Yöntemini çağırarak bu true gibi durumlarda yönteminin dönmesini Assert.IsTrue beklersiniz. Benzer şekilde, büyük harf karakterden başka bir şey ile başlayan bir dizi dize sağlamak istediğiniz. Yöntemini çağırarak bu false gibi durumlarda yönteminin dönmesini Assert.IsFalse beklersiniz.

Kitaplık yönteminiz dizeleri işleyeli olduğundan, boş bir dizeyi ( String.Empty ), karakter olmayan ve 0 olan geçerli bir dizeyi ve başlatılmamış bir dizeyi başarıyla işleyenin de emin Length olmak null gerekir. Doğrudan statik StartsWithUpper bir yöntem olarak çağırabilirsiniz ve tek bir bağımsız değişken String geçebilirsiniz. Veya için atanmış StartsWithUpper bir değişken üzerinde genişletme yöntemi olarak çağrısı string null yapabilirsiniz.

Her biri bir dize dizisinde her öğe için bir Assert yöntem çağıran üç yöntem tanımlayarak. Test hatası durumunda görüntülenecek bir hata iletisi belirtmenize olanak sağlayan bir yöntem aşırı yüklemesi çağırabilirsiniz. İleti, hataya neden olan dizeyi tanımlar.

Test yöntemlerini oluşturmak için:

  1. UnitTest1.cs veya UnitTest1.vb kod penceresinde kodu aşağıdaki 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));
                }
            }
        }
    }
    
    Imports Microsoft.VisualStudio.TestTools.UnitTesting
    Imports UtilityLibraries
    
    Namespace StringLibraryTest
        <TestClass>
        Public Class UnitTest1
            <TestMethod>
            Public Sub TestStartsWithUpper()
                ' Tests that we expect to return true.
                Dim words() As String = {"Alphabet", "Zebra", "ABC", "Αθήνα", "Москва"}
                For Each word In words
                    Dim result As Boolean = word.StartsWithUpper()
                    Assert.IsTrue(result,
                           $"Expected for '{word}': true; Actual: {result}")
                Next
            End Sub
    
            <TestMethod>
            Public Sub TestDoesNotStartWithUpper()
                ' Tests that we expect to return false.
                Dim words() As String = {"alphabet", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство",
                                   "1234", ".", ";", " "}
                For Each word In words
                    Dim result As Boolean = word.StartsWithUpper()
                    Assert.IsFalse(result,
                           $"Expected for '{word}': false; Actual: {result}")
                Next
            End Sub
    
            <TestMethod>
            Public Sub DirectCallWithNullOrEmpty()
                ' Tests that we expect to return false.
                Dim words() As String = {String.Empty, Nothing}
                For Each word In words
                    Dim result As Boolean = StringLibrary.StartsWithUpper(word)
                    Assert.IsFalse(result,
                           $"Expected for '{If(word Is Nothing, "<null>", word)}': false; Actual: {result}")
                Next
            End Sub
        End Class
    End Namespace
    

    yönteminde büyük harf karakterler testi Yunanca büyük harf TestStartsWithUpper alfa (U+0391) ve Kiril büyük harfi EM (U+041C) içerir. yönteminde küçük harfli karakterlerin testinde Yunanca küçük harf TestDoesNotStartWithUpper alfa (U+03B1) ve Kiril küçük harfi Ghe (U+0433) yer alır.

  2. Menü çubuğunda Dosya Kaydet > UnitTest1.cs As veya Dosya Kaydetme > UnitTest1.vb As seçeneğini belirleyin. Dosyayı Farklı Kaydet iletişim kutusunda Kaydet düğmesinin yanındaki oku ve Ardından Kodlama ile Kaydet'i seçin.

    Visual Studio Dosyayı Farklı Kaydet iletişim kutusu

  3. Dosyayı kaydetmek için Farklı Kaydet'i Onayla iletişim kutusunda Evet düğmesini seçin.

  4. Gelişmiş Kaydetme Seçenekleri iletişim kutusunda, Kodlama açılan listesinde Unicode (imzalı UTF-8) - Kod sayfası 65001'i seçin ve Tamam'ı seçin.

    Visual Studio Gelişmiş Kaydetme Seçenekleri iletişim kutusu

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

  5. Menü çubuğunda Tüm Testleri Çalıştır'ı > seçin. Test Gezgini penceresi açılmazsa Test Gezgini'ni seçerek > açın. Üç test Başarılı Testler bölümünde listelenir ve Özet bölümünde test çalıştırması sonucu raporlanmaktadır.

    Test geçirme ile Test Gezgini penceresi

Test hatalarını işleme

Test güdümlü geliştirme (TDD) yapıyorsanız önce testleri yazarsınız ve ilk kez çalıştırsanız başarısız olur. Ardından uygulamaya testin başarılı olması için kod eklersiniz. Bu öğreticide, doğrulayan uygulama kodunu yazdıktan sonra testi oluşturduğunuz için testin başarısız olduğunu gördünüz. Testin başarısız olmasını beklediğinizde başarısız olduğunu doğrulamak için test girişine geçersiz bir değer ekleyin.

  1. wordsyönteminde dizisini TestDoesNotStartWithUpper "Error" dizesini içerecek şekilde değiştirme. Testleri çalıştırmak için bir çözüm özel Visual Studio otomatik olarak açık dosyaları kaydetmesi nedeniyle dosyayı kaydetmeye gerek yok.

    string[] words = { "alphabet", "Error", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство",
                       "1234", ".", ";", " " };
    
    Dim words() As String = { "alphabet", "Error", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство",
                       "1234", ".", ";", " " }
    
    
  2. Menü çubuğundan Test Çalıştırma Tüm > Testleri'ne seçerek testi çalıştırın. Test Gezgini penceresi iki testin başarılı olduğunu ve birinin başarısız olduğunu gösterir.

    Başarısız testler ile Test Gezgini penceresi

  3. Başarısız olan testi TestDoesNotStartWith seçin.

    Test Gezgini penceresi, onay tarafından üretilen iletiyi görüntüler: "Assert.IsFalse başarısız oldu. 'Hata' için bekleniyor: false; actual: True". Hata nedeniyle dizide "Hata" sonrasında hiçbir dize test edilmemiştir.

    IsFalse onay hatasını gösteren Test Gezgini penceresi

    1. adımda eklenen "Error" dizesini kaldırın. Testi yeniden çalıştır ve testler başarılı oldu.

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

Artık kitaplığın Hata Ayıklama derlemesini çalıştırarak testlerin hepsi başarılı olduğu için, kitaplığın Yayın derlemesinde testleri bir kez daha ç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ışlara neden olabilir.

Yayın derlemeyi test etmek için:

  1. Uygulama araç Visual Studio, Derleme yapılandırmasını Hata Ayıklama olarak Yayın olarak değiştirebilirsiniz.

    yayın derlemesi vurgulanmış Visual Studio araç çubuğu

  2. Çözüm Gezgini, StringLibrary projesine sağ tıklayın ve kitaplığı yeniden derlemek için bağlam menüsünden Oluştur ' u seçin.

    Build komutuyla StringLibrary bağlam menüsü

  3. Menü çubuğundan tüm testleri Çalıştır test ' i seçerek birim testlerini çalıştırın. Testler geçer.

Hata ayıklama testleri

ıde 'niz olarak Visual Studio kullanıyorsanız, öğreticide gösterilen aynı süreci kullanabilirsiniz: birim test projenizi kullanarak kodda hata ayıklamak için Visual Studio kullanarak bir .net konsol uygulamasında hata ayıklama . Gösterimi uygulama projesini başlatmak yerine stringlibrarytests projesine sağ tıklayın ve bağlam menüsünden testlerin hatalarını ayıkla ' yı 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:

Bu öğreticide, bir çözüme test projesi ekleyerek birim testinin nasıl otomatikleştirilmesi gösterilmektedir.

Önkoş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çevelerinden biridir. Diğerleri xUnit ve NUnit' dir.

  1. Visual Studio’yu çalıştırın.

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

  3. Çözüme "StringLibraryTest" adlı yeni bir birim test projesi ekleyin.

    1. Çözüm Gezgini çözüme sağ tıklayın ve > Yeni proje Ekle ' yi seçin.

    2. Yeni Proje Ekle sayfasında, arama kutusuna MSTest yazın. dil listesinden C# veya Visual Basic seçin ve ardından Platform listesinden tüm platformlar ' ı seçin.

    3. MSTest Test Project şablonunu seçin ve ardından ileri' yi seçin.

    4. yeni projenizi yapılandırın sayfasında, Project adı kutusuna stringlibrarytest girin. Ardından İleri' yi seçin.

    5. Ek bilgiler sayfasında, hedef çerçeve kutusunda .NET 5,0 (geçerli) seçeneğini belirleyin. Ardından Oluştur’u seçin.

  4. Visual Studio projeyi oluşturur ve aşağıdaki kodla kod penceresinde sınıf dosyasını açar. Kullanmak istediğiniz dil gösterilmiyorsa sayfanın en üstündeki dil seçicisini değiştirin.

    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace StringLibraryTest
    {
        [TestClass]
        public class UnitTest1
        {
            [TestMethod]
            public void TestMethod1()
            {
            }
        }
    }
    
    Imports Microsoft.VisualStudio.TestTools.UnitTesting
    
    Namespace StringLibraryTest
        <TestClass>
        Public Class UnitTest1
            <TestMethod>
            Sub TestSub()
    
            End Sub
        End Class
    End Namespace
    

    Birim testi şablonu tarafından oluşturulan kaynak kodu aşağıdakileri yapar:

    [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 , Stringlibrarytest projesinde projeye bir başvuru ekleyin StringLibrary .

  1. Çözüm Gezgini, stringlibrarytest projesinin bağımlılıklar düğümüne sağ tıklayın ve bağlam menüsünden Project başvuru ekle ' yi seçin.

  2. Başvuru Yöneticisi iletişim kutusunda, Projeler düğümünü genişletin ve StringLibrary' ın yanındaki kutuyu seçin. Derlemeye başvuru eklemek StringLibrary derleyicinin Stringlibrarytest projesini derlerken StringLibrary yöntemlerini bulmasını sağlar.

  3. 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:

  1. UnitTest1. cs veya UnitTest1. vb kodu penceresinde, kodu aşağıdaki 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));
                }
            }
        }
    }
    
    Imports Microsoft.VisualStudio.TestTools.UnitTesting
    Imports UtilityLibraries
    
    Namespace StringLibraryTest
        <TestClass>
        Public Class UnitTest1
            <TestMethod>
            Public Sub TestStartsWithUpper()
                ' Tests that we expect to return true.
                Dim words() As String = {"Alphabet", "Zebra", "ABC", "Αθήνα", "Москва"}
                For Each word In words
                    Dim result As Boolean = word.StartsWithUpper()
                    Assert.IsTrue(result,
                           $"Expected for '{word}': true; Actual: {result}")
                Next
            End Sub
    
            <TestMethod>
            Public Sub TestDoesNotStartWithUpper()
                ' Tests that we expect to return false.
                Dim words() As String = {"alphabet", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство",
                                   "1234", ".", ";", " "}
                For Each word In words
                    Dim result As Boolean = word.StartsWithUpper()
                    Assert.IsFalse(result,
                           $"Expected for '{word}': false; Actual: {result}")
                Next
            End Sub
    
            <TestMethod>
            Public Sub DirectCallWithNullOrEmpty()
                ' Tests that we expect to return false.
                Dim words() As String = {String.Empty, Nothing}
                For Each word In words
                    Dim result As Boolean = StringLibrary.StartsWithUpper(word)
                    Assert.IsFalse(result,
                           $"Expected for '{If(word Is Nothing, "<null>", word)}': false; Actual: {result}")
                Next
            End Sub
        End Class
    End Namespace
    

    Yöntemdeki büyük harfli karakterlerin testi, TestStartsWithUpper Yunanca Büyük Harf Alpha (u + 0391) ve Kiril Büyük harf em (u + 041C) içerir. Yöntemdeki küçük harfli karakterlerin testi TestDoesNotStartWithUpper Yunanca Küçük Harf Alpha (u + 03B1) ve Kiril Küçük harf GHE (u + 0433) içerir.

  2. Menü çubuğunda Dosya > Kaydet UnitTest1. cs ' yi veya Dosya > Kaydet UnitTest1. vb dosyasını seçin. Dosyayı farklı kaydet Iletişim kutusunda Kaydet düğmesinin yanındaki oku seçin ve kodlamayla kaydet' i seçin.

    Visual Studio Dosyayı farklı Kaydet iletişim kutusu

  3. Farklı kaydet iletişim kutusunda, dosyayı kaydetmek için Evet düğmesini seçin.

  4. Gelişmiş kaydetme seçenekleri iletişim kutusunda, kodlama açılan LISTESINDEN Unicode (imzayla UTF-8)-kod sayfası 65001 ' i seçin ve Tamam' ı seçin.

    Visual Studio Gelişmiş kaydetme seçenekleri iletişim kutusu

    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.

  5. Menü çubuğunda, Test > Çalıştır tüm testler' i seçin. Test Gezgini penceresi açılmazsa Test > Test Gezgini' ni seçerek açın. Geçen testler bölümünde üç test listelenir ve Özet bölümü Test çalıştırmasının sonucunu raporlar.

    Testleri geçirerek test Gezgini penceresi

Test hatalarını işleme

Test güdümlü geliştirme (TDD) yapıyorsanız önce testleri yazarsınız ve ilk kez çalıştırsanız başarısız olur. Ardından uygulamaya testin başarılı olması için kod eklersiniz. Bu öğreticide, doğrulayan uygulama kodunu yazdıktan sonra testi oluşturduğunuz için testin başarısız olduğunu gördünüz. Testin başarısız olmasını beklediğinizde başarısız olduğunu doğrulamak için test girişine geçersiz bir değer ekleyin.

  1. wordsyönteminde dizisini TestDoesNotStartWithUpper "Error" dizesini içerecek şekilde değiştirme. Testleri çalıştırmak için bir çözüm özel Visual Studio otomatik olarak açık dosyaları kaydetmesi nedeniyle dosyayı kaydetmeye gerek yok.

    string[] words = { "alphabet", "Error", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство",
                       "1234", ".", ";", " " };
    
    Dim words() As String = { "alphabet", "Error", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство",
                       "1234", ".", ";", " " }
    
    
  2. Menü çubuğundan Test Çalıştırma Tüm > Testleri'ne seçerek testi çalıştırın. Test Gezgini penceresi iki testin başarılı olduğunu ve birinin başarısız olduğunu gösterir.

    Başarısız testler ile Test Gezgini penceresi

  3. Başarısız olan testi TestDoesNotStartWith seçin.

    Test Gezgini penceresi, onay tarafından üretilen iletiyi görüntüler: "Assert.IsFalse başarısız oldu. 'Hata' için bekleniyor: false; actual: True". Hata nedeniyle dizide "Hata" sonrasında hiçbir dize test edilmemiştir.

    IsFalse onay hatasını gösteren Test Gezgini penceresi

    1. adımda eklenen "Error" dizesini kaldırın. Testi yeniden çalıştır ve testler başarılı oldu.

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

Artık kitaplığın Hata Ayıklama derlemesini çalıştırarak testlerin hepsi başarılı olduğuna göre, kitaplığın Yayın derlemesinde testleri bir kez daha ç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ışlara neden olabilir.

Yayın derlemeyi test etmek için:

  1. Uygulama araç Visual Studio, Derleme yapılandırmasını Hata Ayıklama olarak Yayın olarak değiştirebilirsiniz.

    Visual Studio derleme vurgulanmış bir araç çubuğu

  2. Bu Çözüm Gezgini, StringLibrary projesine sağ tıklayın ve kitaplığı yeniden derlemek için bağlam menüsünden Derleme'yi seçin.

    Build komutuyla StringLibrary bağlam menüsü

  3. Menü çubuğundan Test Çalıştırma Tüm Testleri'i > seçerek birim testlerini çalıştırın. Testler geçer.

Testlerde hata ayıklama

IDE'niz olarak Visual Studio kullanıyorsanız, Öğretici: Birim testi projenizi kullanarak kodda hata ayıklamak için Visual Studio kullanarak .NET konsol uygulamasında hata ayıklama içinde gösterilen işlemi kullanabilirsiniz. ShowCase uygulama projesini başlatma yerine StringLibraryTests projesine sağ tıklayın ve bağlam menüsünden Testlerde Hata Ayıkla'yı seçin.

Visual Studio hata ayıklayıcı eklenmiş olarak test projesini başlatır. Yürütme, test projesine veya temel alınan kitaplık koduna ekledik her kesme noktası için durdurulacak.

Ek kaynaklar

Sonraki adımlar

Bu öğreticide, bir sınıf kitaplığını birim testiyle test ettiysiniz. Kitaplığı bir paket olarak NuGet başkalarının da kullanılabilir hale ekleyebilirsiniz. Nasıl olduğunu öğrenmek için aşağıdaki öğreticiyi NuGet izleyin:

Bir kitaplığı bir kitaplık paketi NuGet, diğerleri yükleyebilir ve kullanabilir. Nasıl olduğunu öğrenmek için aşağıdaki öğreticiyi NuGet izleyin:

Kitaplığın paket olarak dağıtılmasına gerek yok. Bu, onu kullanan bir konsol uygulaması ile paket olabilir. Konsol uygulaması yayımlamayı öğrenmek için bu serinin önceki öğreticiye bakın:

Bu öğretici yalnızca .NET 5 ve .NET 6 için kullanılabilir. Sayfanın üst kısmında bu seçeneklerden birini belirleyin.