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