如何使用 .NET Core CLI 建立 Unit Test ?
使用 .NET Core SDK 建立 Unit Test
Contents
雖然我們可以使用 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
目錄下
- 輸入
dotnet new mstest -o MyClasLib.Tests
將 MSTest 類型專案建立在MyClassLib.Tests
目錄下 - .NET Core SDK 開始建立專案所需的檔案
- 自動 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。
- 輸入
dotnet add reference ../MyClassLib/MyClassLib.csproj
將MyClassLib
project 加入 reference - 觀察
MyConsole.csproj
MyClassLib.csproj
被加入在<ItemGroup>
下的<ProjectReference>
- 其他 package 被加入在
<ItemGroup>
下的<PackageReference>
Project reference 與 package reference 都被記錄在
csproj
中,其中<ProjectReference>
紀錄 project reference,而<PackageReference>
記錄 package reference
編輯 UnitTest1.cs
UnitTest1.cs
1 | using Microsoft.VisualStudio.TestTools.UnitTesting; |
根據 3A原則
建立 CalculatorService
的 Unit Test。
- 開啟
UnitTest1.cs
- 建立
CalculatorService
的 Unit Test
執行 Unit Test
1 | ~/MyProjet $ dotnet test |
使用 dotnet test
執行單元測試。
- 輸入
dotnet test
執行單元測試 - 測試通過,得到
綠燈
其他相關指令
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