.NET Core - 测试库


在本章中,我们将测试我们的 StringLibrary,为此,我们需要重新安排我们的项目,以便我们可以遵循默认约定。

让我们打开global.json文件。

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

在此文件的顶部,您将看到项目设置,它默认设置一些文件夹,例如srctest 。

按照惯例,我们必须在这些文件夹中包含项目,这是新的惯例,它将用作 .NET Core 的一部分。

在解决方案资源管理器中,您可以看到控制台项目和库项目都位于src文件夹内,而测试项目位于test文件夹内。

SRC文件夹

解决方案资源管理器中的项目结构并不代表项目在磁盘上的物理位置。现在让我们打开 Solution 文件夹,您将看到StringLibrary项目不在src文件夹内。

字符串库项目

您可以看到srctest文件夹都映射到global.json文件中指定的约定。然而,我们有一个不符合惯例的项目 StringLibrary。现在让我们在src文件夹中添加StringLibrary项目。

在 src 文件夹中,我们有两个项目,我们需要解决问题,以便我们可以正确使用所有项目。让我们返回到 Visual Studio,右键单击 StringLibrary 项目并选择“删除”选项。它不会删除它,但只会删除该项目。

删除项目

现在右键单击 src 文件夹并选择添加 → 现有项目...

斯瑞克

浏览到位于src文件夹内的 StringLibrary 项目,选择StringLibrary.csproj文件并单击Open

字符串库.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 项目的引用并选择添加引用...

添加

单击“确定” ,这会将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链接,您将在测试资源管理器中看到以下输出。

运行所有链接

您还可以从命令行运行测试。让我们打开命令提示符并执行dotnet test命令。

.Net测试