天天看點

C# 8.0和.NET Core 3.0進階程式設計 分享筆記六:第三部分單元測試

修複代碼中的bug所要付出的代碼很昂貴。開發過程中發現錯誤的時間越早,修複成本就越低。

單元測試是在開發早期發現BUG的好方法。一些開發人員甚至遵循這樣的原則:程式員應該在編寫代碼之前建立單元測試,這成為測試驅動開發(Text-Driven Development,TDD)。

微軟提供了專用的單元測試架構,名為MSTest;但是,這裡将使用第三方單元測試架構xUnit.net。

執行如下步驟:

(1)在Chapter04檔案夾中建立2個名為CalculatorLib和CalculatorLibUnitTests的子檔案夾,并将它們分别添加到工作區。(我因為操作失誤,從新建立了Calculator檔案夾)其他步驟一樣,添加建立2個子檔案夾,然後右鍵添加到工作區。

(2)導航到Terminal|new Terminal并選擇CalculatorLib。

(3)在終端視窗中輸入以下指令:

dotnet new classlib

(4)将名為Class1.cs的檔案重命名為Calculator.cs。

(5)修改Calculator.cs檔案以定義為Calculator類(帶有故意的錯誤吧加法寫成乘法),如果你覺得代碼比較亂Visual Studio Code下使用Ctrl+A全選,然後使用Ctrl+K和Ctrl+F組合鍵自動格式化代碼布局,如下所示:

(6)在終端視窗中輸入以下指令:

dotnet build

(7)導航到Terminal|New Terminal并選擇CalculatorLibUnitTests。

(8)在終端視窗中輸入以下指令:

dotnet new xunit

(9)單擊名為CalculatorLibUnitTests.csproj的檔案,修改配置以添加ItemGroup部分,其他包含對CalculatorLib項目的引用,如下所示:

(10)将檔案UnitTest1.cs重命名為CalculatorUnitTests.cs

(11)在終端視窗中輸入以下指令:

好的單元測試包含如下三個部分。

Arrange:這部分為輸入輸出聲明和執行個體化變量。

Act:這部分執行想要測試的單元。在我們的例子中,這意味着調用要測試的方法。

Assert:這部分對輸出進行斷言。斷言是一種信念,如果不為真,則表示測試失敗。例如,當計算2+2時,期望結果是4。

現在我們為Calculator類編寫單元測試。

(1)打開CalculatorUnitTests.cs,将類重命名為CalculatorUnitTests,導入CalculatorLib名稱空間,然後修改CalculatorUnitTests類,使其擁有兩個測試方法,分别計算2加2以及2加3,如下所示:

(1)在CalculatorLibUnitTest項目的終端視窗中輸入以下指令:

dotnet test

(2)請注意,輸出結果表面運作了2個測試:一個測試通過,另一個測試失敗。

(3)糾正A的的方法中的乘法為加法。

(4)再次運作單元測試,你會發現BUG修複,測試通過了。