.NET Core - 測試庫



在本節中,我們將測試我們的 StringLibrary,為此,我們需要重新排列我們的專案,以便我們能夠遵循預設約定。

讓我們開啟global.json檔案。

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

在此檔案的頂部,您將看到專案設定,它預設設定了一些資料夾,例如srctest

按照慣例,我們必須在這些資料夾中擁有專案,這是新的約定,它將作為 .NET Core 的一部分使用。

在解決方案資源管理器中,您可以看到控制檯專案和庫專案都在src資料夾內,而測試專案在test資料夾內。

SRC Folder

並且解決方案資源管理器中的專案結構並不代表專案在磁碟上的物理位置。現在讓我們開啟解決方案資料夾,您將看到StringLibrary專案不在src資料夾內。

StringLibrary Project

您可以看到srctest資料夾都對映到global.json檔案中指定的約定。但是,我們有一個專案 StringLibrary 不符合約定。現在讓我們將StringLibrary專案新增到src資料夾中。

在 src 資料夾中,我們有兩個專案,我們需要解決此問題,以便我們可以正確使用所有專案。讓我們回到 Visual Studio,右鍵單擊 StringLibrary 專案並選擇“刪除”選項。它不會刪除它,只會刪除專案。

Remove Project

現在右鍵單擊 src 資料夾並選擇新增→現有專案…

SRC

瀏覽到現在位於src資料夾內的 StringLibrary 專案,選擇StringLibrary.csproj檔案,然後單擊開啟

StringLibrary.csproj

現在,我們必須從控制檯應用的project.json檔案中刪除StringLibrary的引用。

{ 
   "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" 
      } 
   } 
} 

儲存更改,然後在您的控制檯專案中再次新增StringLibrary的引用。

{ 
   "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" 
      } 
   } 
}

現在一切應該都能正常工作了,您可以構建StringLibrary,然後構建FirstApp(控制檯專案)而不會出現任何錯誤。現在讓我們使用 xunit 測試 StringLibrary 功能。我們需要將 StringLibrary 的引用新增到我們的測試專案中。右鍵單擊 StringLibraryTests 專案的“引用”,然後選擇“新增引用…”。

Add

單擊確定,這將向我們的測試專案新增StringLibrary的引用。現在讓我們替換Tests.cs檔案中的以下程式碼。

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 的功能。讓我們單擊“執行全部”連結,您將在測試資源管理器中看到以下輸出。

Run All Link

您也可以從命令列執行測試。讓我們開啟命令提示符並執行dotnet test命令。

.Net Test
廣告