使用 .NET Core SDK 建立 Unit Test
Contents
1.Version
2.建立 Unit Test 项目
3.使用 VS Code 开启项目
4.新增 Project Reference
5.编辑 UnitTest1.cs
6.执行 Unit Test
7.其他相关指令
8.Conclusion
虽然我们可以使用 console app 来测试 class library,但比较好的方式是建立 unit test,搭配各种测试案例测试 class library 的结果。
Version
macOS High Sierra 10.13.3
.NET Core SDK 2.1.101
建立 Unit Test 项目
1$ dotnet new mstest -o MyClassLib.Tests
使用dotnet new?建立 project。
●mstest: 建立 MSTest 类型项目
●-o:o output,建立在?MyClassLib.Tests?目录下
1.输入dotnet new mstest -o MyClasLib.Tests?将 MSTest 类型项目建立在?MyClassLib.Tests?目录下
2..NET Core SDK 开始建立项目所需的档案
3.自动 restore dependency
除了 MSTest,.NET Core SDK 预设还支援 xUnit,若想使用 NUnit,可到?Available templates for dotnet new?下载 NUnit project template
使用 VS Code 开启项目
1$ code MyClassLib.Tests
使用code?执行 VS Code,后面接开启目录名称。
●使用 VS Code 开启MyClassLib.Tests
新增 Project Reference
1~/MyProject $ dotnet add reference ../MyClassLib/MyClassLib.csproj
因为MyClassLib.Tests?需要使用MyClassLib,所以使用dotnet add reference新增 project reference。
1.输入dotnet add reference ../MyClassLib/MyClassLib.csproj?将?MyClassLib?project 加入 reference
2.观察MyConsole.csproj
3.MyClassLib.csproj被加入在<ItemGroup>下的<ProjectReference>
4.其他 package 被加入在<ItemGroup>下的<PackageReference>
Project reference 与 package reference 都被记录在csproj中,其中<ProjectReference>纪录 project reference,而<PackageReference>记录 package reference
编辑 UnitTest1.cs
UnitTest1.cs
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace MyClassLib.Tests { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { // Arrange var target = new CalculatorService(); // Act var actual = target.Sum(1, 1); // Assert var expected = 2; Assert.AreEqual(expected, actual); } } } |
根据3A原则建立CalculatorService?的 Unit Test。
1.开启UnitTest1.cs
2.建立CalculatorService的 Unit Test
执行 Unit Test
1~/MyProjet $ dotnet test
使用dotnet test执行单元测试。
1.输入dotnet test执行单元测试
2.测试通过,得到绿灯
其他相关指令
1$ dotnet remove reference *.csproj
移除 project reference。
1$ dotnet list reference
列出所有 project reference。
Conclusion
●.NET Core SDK 支援各种 Unit Test,包括 MSTest、xUnit 与 NUnit
●使用dotnet add reference新增 project reference
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。