.NET核心 - 测试库

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

让我们打开 global.json 文件.

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


在此文件的顶部,您将看到项目设置,默认情况下会设置一些文件夹,例如 src test .

按照惯例,我们必须在这些文件夹中有项目,这是新的约定,它将作为.NET Core的一部分使用.

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

SRC Folder

Solu中的项目结构tion Explorer不代表磁盘上物理存在的位置.现在让我们打开Solution文件夹,您将看到 StringLibrary 项目不在 src 文件夹中.

StringLibrary Project

你可以看到 src 测试文件夹都映射到 global.json 文件中指定的约定.但是,我们有一个不合规的项目StringLibrary.现在让我们在 src 文件夹中添加 StringLibrary 项目.

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

删除项目

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

SRC

浏览StringLibrary现在位于 src 文件夹中的项目,选择 StringLibrary.csproj 文件并单击打开.

StringLibrary.csproj

我们现在必须从<删除 StringLibrary 的引用b> project.json 控制台应用程序的文件.

{ 
   "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项目的References并选择Add Reference ...

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的功能.让我们点击全部运行链接,您将在测试资源管理器中看到以下输出.

运行所有链接

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

.Net测试