.NET Core - Test Kitaplığı

Bu bölümde, StringLibrary'imizi test edeceğiz ve bunu yapmak için, varsayılan kuralı izleyebilmemiz için projelerimizi yeniden düzenlememiz gerekiyor.

Açalım global.json dosya.

{ 
   "projects": [ "src", "test" ], 
   "sdk": { 
      "version": "1.0.0-preview2-003131" 
   } 
}

Bu dosyanın en üstünde proje ayarlarını göreceksiniz ve aşağıdaki gibi bazı klasörler oluşturacaktır: src ve test varsayılan olarak.

Kural olarak, bu klasörlerde projelerimiz olması gerekir, bu yeni kuraldır ve bu .NET Core'un bir parçası olarak kullanılacaktır.

Solution Explorer'da, hem konsol projesinin hem de kitaplık projesinin içinde olduğunu görebilirsiniz. src Test projesi içindeyken klasör test Klasör.

Ve Çözüm Gezgini'ndeki proje yapısı, projelerin diskte fiziksel olarak nerede bulunduğunu temsil etmez. Şimdi Çözüm klasörünü açalım ve göreceksiniz kiStringLibrary proje içinde değil src Klasör.

İkisini de görebilirsin src ve test klasörler, içinde belirtilen kurala eşlenir global.jsondosya. Ancak, standart olmayan bir StringLibrary projemiz var. Şimdi ekleyelimStringLibrary içindeki proje src Klasör.

Src klasöründe iki projemiz var ve tüm projeleri doğru bir şekilde kullanabilmemiz için sorunu çözmemiz gerekiyor. Visual Studio'ya geri dönelim ve StringLibrary projesine sağ tıklayıp Kaldır seçeneğini seçelim. Onu silmez, ancak yalnızca projeyi kaldırır.

Şimdi src klasörüne sağ tıklayın ve seçin Add → Existing Project…

Şu anda içinde bulunan StringLibrary projesine göz atın. src klasörü seçin StringLibrary.csproj dosyala ve tıkla Open.

Şimdi referansını kaldırmamız gerekiyor StringLibrary -den project.json konsol uygulamasının dosyası.

{ 
   "version": "1.0.0-*", 
   "buildOptions": { 
      "emitEntryPoint": true 
   }, 
   "dependencies": { 
      "Microsoft.NETCore.App": { 
         "type": "platform", 
         "version": "1.0.1" 
      }, 
      "NuGet.CommandLine": "3.5.0", 
      "System.Runtime.Serialization.Json": "4.0.3" 
   }, 
   "frameworks": { 
      "netcoreapp1.0": { 
         "dependencies": { }, 
         "imports": "dnxcore50" 
      } 
   } 
}

Değişiklikleri kaydedin ve ardından bir referans ekleyin StringLibrary yine konsol projenizde.

{ 
   "version": "1.0.0-*", 
   "buildOptions": { 
      "emitEntryPoint": true 
   }, 
   "dependencies": { 
      "Microsoft.NETCore.App": { 
         "type": "platform", 
         "version": "1.0.1" 
      }, 
   "NuGet.CommandLine": "3.5.0", 
      "System.Runtime.Serialization.Json": "4.0.3" 
   }, 
   "frameworks": { 
      "netcoreapp1.0": { 
         "dependencies": { 
            "StringLibrary": { 
               "target": "project" 
            } 
         }, 
         "imports": "dnxcore50" 
      } 
   } 
}

Şimdi her şey yeniden çalışıyor olmalı ve inşa edebilirsiniz StringLibrary ve sonra FirstApp(konsol projesi) hatasız. Şimdi xunit kullanarak StringLibrary işlevselliğini test edelim. Test projemize StringLibrary referansı eklememiz gerekiyor. StringLibraryTests projesinin Referansları'na sağ tıklayın ve Referans Ekle… öğesini seçin.

Tıklayın OK bir referans ekleyecek StringLibrarytest projemize. Şimdi aşağıdaki kodu şuradakiTests.cs dosya.

using System; 
using Xunit; 
using StringLibrary; 
  
namespace Tests { 
   public class Tests { 
      [Fact] 
      public void StartsWithUpperCaseTest() { 
         string input = "Mark"; 
         Assert.True(input.StartsWithUpper()); 
      } 
      [Fact] 
      public void StartsWithLowerCaseTest() { 
         string input = "mark"; 
         Assert.True(input.StartsWithLower()); 
      } 
      [Fact] 
      public void StartsWithNumberCaseTest() { 
         string input = "123"; 
         Assert.True(input.StartsWithNumber()); 
      } 
   } 
}

StringLibrary'nin işlevselliğini test edecek üç test yöntemimiz olduğunu görebilirsiniz. TıklayalımRun All bağlantı ve aşağıdaki çıktıyı Test Gezgini'nde göreceksiniz.

Testleri komut satırından da çalıştırabilirsiniz. Komut istemini açalım vedotnet test komut.