簡介
xUnit.net 是針對 .NET 的免費,開源單元測驗框架,可并行測驗、資料驅動測驗,測驗專案需參考被測驗專案,從而對其進行測驗,測驗專案同時需要參考 xUnit,測驗撰寫完成后,用 Test Runner 來測驗專案,Test Runner 可以讀取測驗代碼,并且知道所會使用的測驗框架,然后執行,并顯示結果,如下圖:專案、測驗專案、xUnit、Test Runner 幾者關系

支持平臺
xUnit.net 目前支持 .Net Framework、.Net Core、.Net Standard、UWP、Xamarin ,可以在這些平臺使用 xUnit 進行測驗,
Test Runner
Test Runner 有 visual studio 本身的測驗資管理器、resharper、dotnet cli 這些工具
- vs 測驗資管理器,右鍵測驗或者 ctrl+ r + t
- resharper,這個比較占記憶體,是 JetBrains 旗下的 IDE
- dotnet cli,使用 cmd 或者 powershell 執行 dotnet test 命令
測驗型別
測驗型別可分為,單元測驗、集成測驗、皮下測驗、UI測驗,對于不同的測驗其深度即廣度也相對不一樣,實際上常用的是單元測驗和集成測驗,xUnit.net 就屬于單元測驗,

- 單元測驗:可以測驗某個類或方法,具有較高的深度,對應用的功能覆寫面很小
- 集成測驗:有更好的廣度,可以測驗web資源,資料庫資源等
- 皮下測驗:在 web 中針對 controller 下的節點測驗
- UI 測驗:是對應用的界面功能測驗
Coding 教程
接下來,通過一個案例來入門今天的主題 xUnit 單元測驗,這里我們使用簡單計數器的 demo 來進行講解
創建專案
首先,使用 visual studio 創建一個類別庫 CalculatorPro,解決方案名稱為 XUnitDemo


接著創建一個 Calculator 型別,其內有個 方法 Add 用來計算兩個數值進行相加,并回傳計算結果
public class Calculator
{
public int Add(int x, int y)
{
return x + y;
}
}

創建測驗專案
在類別庫專案創建完成后,接著創建一個單元測驗的專案 CalculatorProTest ,命名通常使用 專案+Test 的約定方式命名測驗專案


創建完成測驗專案 CalculatorProTest 后,安裝 xunit、xunit.runner.visualstudio 兩個 package,xunit 是撰寫單元測驗所依賴的,xunit.runner.visualstudio 是在 visual studio 可以運行單元測驗的 runner

在依賴的 package 安裝完成后,就可以寫單元測驗了,接著創建 CalculatorTests 類,其內 ShouldAddEquals5 方法用來測驗 Calculator 中的 Add 方法,
Fact 說明這個方法是個單元測驗方法,sut 是個通用命名規范,Assert 用來對比結果,代碼中的三步也就是單元測驗所謂的 3A
public class CalculatorTests
{
[Fact]
public void ShouldAddEquals5() //注意命名規范
{
//Arrange
var sut = new Calculator(); //sut-system under test,通用命名
//Act
var result = sut.Add(3, 2);
//Assert
Assert.Equal(5, result);
}
}
運行單元測驗
在專案與測驗專案創建完成后,就可以運行單元測驗了,在 CalculatorTests 類中 ShouldAddEquals5 方法上,右鍵點擊運行單元測驗或者使用快捷鍵 ctrl + r + t ,就可以看到測驗資源管理器,及單元測驗運行結果,
下圖可以看到 3 + 2 = 5 ,在 Assert.Equal(5, result) 就說明測驗是通過的(5 是期望結果,result 是單元測驗方法執行結果),在資源管理器可以看到,單元測驗是通過的

可以模擬單元測驗 fail 情況,將 Assert.Equal(5, result) 改為 Assert.Equal(6, result) ,即期望的結果 5 改為期望結果為 6 ,3+2 必然不 = 6,然后啟動單元測驗 ,可以看到單元測驗是不通過的

分組依據,在測驗資源管理器中,可以根專案、類、命名空間等,進行單元測驗資源進行各類視圖的查看,如下圖

擴展:還可以通過 dotnet cli 在測驗專案目錄,執行單元測驗命令 dotnet test ,當然還可以有許多引數,有興趣的小伙伴可使用 help 查看學習

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/393975.html
標籤:其他
上一篇:如何標準化張量
