Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğreticide, bir çözüme test projesi ekleyerek birim testlerini otomatikleştirme adımları gösterilmektedir.
Önkoşullar
- Bu öğretici, visual studio codekullanarak .NET sınıf kitaplığı oluşturma
içinde oluşturduğunuz çözümle çalışır.
Birim testi projesi oluşturma
Birim testleri, geliştirme ve yayımlama sırasında otomatik yazılım testi sağlar. Bu öğreticide kullandığınız test çerçevesi MSTest'tir. MSTest, aralarından seçim yapabileceğiniz üç test çerçevesinden biridir. Diğerleri xUnit ve nUnit.
Visual Studio Code'ı başlatın.
Visual Studio Codekullanarak .NET sınıf kitaplığı oluşturma
içinde oluşturduğunuz çözümünü açın. Çözüm Gezgini 'nden Yeni Proje'seçin veya Komut Paleti'nden .NET: Yeni Proje öğesini seçin.MSTest Test Projesi seçin, "StringLibraryTest" olarak adlandırın, varsayılan dizini seçin ve Proje Oluştur seçin.
Proje şablonu aşağıdaki koda sahip bir UnitTest1.cs dosyası oluşturur:
namespace StringLibraryTest; [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { } }Birim testi şablonu tarafından oluşturulan kaynak kodu aşağıdakileri yapar:
-
UnitTest1sınıfına TestClassAttribute özniteliğini uygular. -
TestMethod1tanımlamak için TestMethodAttribute özniteliğini uygular. - Birim testi için kullanılan türleri içeren Microsoft.VisualStudio.TestTools.UnitTesting ad alanını içeri aktarır. Ad alanı, GlobalUsings.csiçindeki bir
global usingyönergesi aracılığıyla içeri aktarılır.
[TestClass]
etiketli bir test sınıfında [TestMethod] ile etiketlenen her yöntem, birim testi çağrıldığında otomatik olarak çalıştırılır. -
Proje referansı ekleme
Test projesinin StringLibrary sınıfıyla çalışması için, StringLibraryTest projesine StringLibrary projesine bir başvuru ekleyin.
Çözüm Gezgini'nden 'StringLibraryTest' Projesi'ne sağ tıklayın ve Proje Başvurusu Ekle'yiseçin.
"StringLibrary" öğesini seçin.
Birim testi yöntemleri ekleme ve çalıştırma
Visual Studio bir birim testi çağırdığında, TestClassAttribute özniteliğiyle işaretlenmiş bir sınıfta TestMethodAttribute özniteliğiyle işaretlenmiş her yöntemi çalıştırı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 sık kullanılan testler, Assert sınıfının üyelerini ç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.
Assert sınıfının en sık çağrılan yöntemlerinden bazıları aşağıdaki tabloda gösterilmiştir:
| Assert yöntemleri | Fonksiyon |
|---|---|
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 doğrulama başarısızlıkla sonuçlanır. |
Assert.IsFalse |
Bir koşulun falseolduğunu doğrular. Koşul trueise assert işlemi başarısız olur. |
Assert.IsNotNull |
Bir nesnenin nullolmadığını doğrular. Nesne nullise doğrulama başarısız olur. |
Oluşturması beklenen özel durum türünü belirtmek için bir test yönteminde Assert.ThrowsException (veya MSTest 3.8 ve üzerini kullanıyorsanız Assert.Throws ve Assert.ThrowsExactly) yöntemini de kullanabilirsiniz. Belirtilen özel durum fırlatılmadıysa test başarısız olur.
StringLibrary.StartsWithUpper yöntemini test etmek için büyük harfle başlayan birkaç dize sağlamak istiyorsunuz. Bu durumlarda yönteminin true döndürmesini beklersiniz, böylece Assert.IsTrue yöntemini çağırabilirsiniz. Benzer şekilde, büyük harfli bir karakterle başlamayan bir dizi dize sağlamak istiyorsunuz. Bu durumlarda yönteminin false döndürmesini beklersiniz, böylece Assert.IsFalse yöntemini çağırabilirsiniz.
Kitaplık yönteminiz dizeleri işlediğinden, boş bir dizeyi (String.Empty) ve null dizesini başarıyla işlediğinden de emin olmak istersiniz. Boş dize, karakter içermeyen ve Length 0 olan dizedir.
null dizesi, başlatılmamış olan bir dizedir.
StartsWithUpper'ı doğrudan statik yöntem olarak çağırabilirsiniz ve tek bir String bağımsız değişkeni geçirebilirsiniz. İsterseniz null'ye atanmış string değişkeninde StartsWithUpper'ı extension metodu olarak çağırabilirsiniz.
Her biri bir dize dizisindeki her öğe için bir Assert yöntemi çağıran üç yöntem tanımlayacaksınız. Test hatası durumunda görüntülenecek bir hata mesajı belirtmenize imkân tanıyan bir yöntem çağrısını yapacaksınız. İleti, hataya neden olan dizeyi tanımlar.
Test yöntemlerini oluşturmak için:
StringLibraryTest/UnitTest1.cs
açın ve tüm 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)); } } } }TestStartsWithUpperyöntemindeki büyük harfli karakterlerin testi, Yunanca büyük alfa (U+0391) harfini ve Kiril büyük harf EM'yi (U+041C) içerir.TestDoesNotStartWithUpperyöntemindeki küçük harfli karakterlerin testinde Yunanca küçük alfa (U+03B1) ve Kiril küçük harfi Ghe (U+0433) bulunur.Değişikliklerinizi kaydedin.
Testlerinizi Oluşturma ve Çalıştırma
Çözüm Gezgini 'nde çözüme sağ tıklayın ve Derle seçeneğini seçin veya Komut Paleti'nden .NET: Derleöğesini seçin.
Test penceresini seçin, Testleri Çalıştırseçin veya Komut Paleti'nden Test: Tüm Testleri çalıştır öğesini seçin.
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.
TestDoesNotStartWithUpperyöntemindekiwordsdizisini "Error" dizesini içerecek şekilde değiştirin.string[] words = { "alphabet", "Error", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство", "1234", ".", ";", " " };Düzenleyicide testin yanındaki yeşil hataya tıklayarak testleri çalıştırın.
Çıkış, testin başarısız olduğunu gösterir ve başarısız olan test için bir hata iletisi sağlar: "Assert.IsFalse başarısız oldu. 'Error' için beklenen: false; gerçek: True. Hata nedeniyle, "Error" sonrasındaki dizideki hiçbir dize test edilmedi.
Visual Studio Code Başarısız Test
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 Debug derlemesi çalıştırılırken geçtiğine göre, kitaplığın Release derlemesinde testleri ek bir kez çalıştırın. Derleyici iyileştirmeleri de dahil olmak üzere çeşitli faktörler bazen Debug ve Yayın derlemeleri arasında farklı davranışlara yol açabilir.
Sürümleri derleme yapılandırmasıyla testleri çalıştırın:
dotnet test StringLibraryTest/StringLibraryTest.csproj --configuration ReleaseTestler geçer.
Testlerde hata ayıklama
IDE'niz olarak Visual Studio Code kullanıyorsanız, birim testi projenizi kullanarak kodda hata ayıklamak için Visual Studio Code kullanarak bir .NET konsol uygulamasında hata ayıklama
Visual Studio Code, 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
- .NET'de
Birim testi
Sonraki adımlar
Bu öğreticide bir sınıf kitaplığını birim olarak test ettiniz. NuGet
Dotnet CLI kullanarak paket oluşturma ve yayımlama
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:
dotnet CLI kullanarak paket yükleme ve kullanma
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:
Visual Studio Code kullanarak .NET konsol uygulaması yayımlama
Visual Studio Code uzantısı C# Dev Kit, C# uygulamaları ve kitaplıkları geliştirmeye yönelik daha fazla araç sağlar: