.NET Core – 测试库
.NET Core – 测试库
在本章中,我们将测试我们的 StringLibrary,为此,我们需要重新安排我们的项目,以便我们可以遵循默认约定。
让我们打开global.json文件。
{ "projects": [ "src", "test" ], "sdk": { "version": "1.0.0-preview2-003131" } }
在此文件的顶部,您将看到项目设置,并默认设置一些文件夹,例如src和test。
按照惯例,我们必须在这些文件夹中有项目,这是新的惯例,将用作 .NET Core 的一部分。
在解决方案资源管理器中,您可以看到控制台项目和库项目都在src文件夹中,而测试项目在test文件夹中。
并且解决方案资源管理器中的项目结构并不代表项目在磁盘上的物理位置。现在让我们打开 Solution 文件夹,您将看到StringLibrary项目不在src文件夹中。
您可以看到src和test文件夹都映射到global.json文件中指定的约定。但是,我们有一个不符合惯例的项目 StringLibrary。现在让我们在src文件夹中添加StringLibrary项目。
在 src 文件夹中,我们有两个项目,我们需要修复问题,以便我们可以正确使用所有项目。让我们回到 Visual Studio 并右键单击 StringLibrary 项目并选择 Remove 选项。它不会删除它,但只会删除该项目。
现在右键单击 src 文件夹并选择添加 → 现有项目…
浏览到现在位于src文件夹中的 StringLibrary 项目,选择StringLibrary.csproj文件并单击Open。
我们现在必须从控制台应用程序的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命令。