.NET Core: 在.NET Core中進行單元測試


單元測試能夠幫助開發人員確保所開發的模塊、類以及類中的方法等的正確性,在項目開發過程中,及時進行單元測試能夠避免不必要的BUG以及提高測試效率。

在本文中,我們會分別來學習如何使用MSTest、xUnit以及NUnit這些流行的.NET測試框架來對.NET Core項目進行測試。

一、項目創建

首先,創建一個需要測試的項目。在Visual Studio中創建一個.NET Core 類庫項目,名為Calc,項目創建成功后,刪除自帶的Class1.cs,添加一個類Calculator。

 

Calculator類定義了一個方法Sum,它接受一個或多個整型數值,並返回這些數值的總和。接下來,我們將使用不同的測試框架對這個類庫項目進行測試。

二、使用MSTest測試框架

要對項目進行測試,首先應創建測試項目,在“解決方案管理器”中右擊解決方案名稱Calc,從快捷菜單中添加一個新項目,並選擇“MSTest測試項目”,為項目命名為MSTestSample。

 

創建的MSTest測試項目,會自動引入三個NuGet包。

 

對於Microsoft.NET.Test.Sdk,無論使用哪種測試框架(MSTest、xUnit、NUnit),都需要引用這個包;而另外兩個包,則是MSTest測試框架(MSTest.Framework)和測試適配器(MSTest.TestAdapter),后者用於發現並執行單元執行。

接下來,為測試項目添加對Calc項目的引用。此時,就可以對它進行單元測試了。在UnitTest1.cs中添加測試方法:

 

幾乎所有的測試框架都使用C#特性(Attribute)來標識測試類與測試方法。MSTest測試框架使用[TestClass]和[TestMethod]來分別標識測試類與測試方法。此外,幾乎所有的測試框架都包含一個名為Assert的類,它包含若干靜態方法,用於驗證測試結果,它將決定這個測試方法的成功與否。

除了上圖中的AreEqual方法,Assert類的其它方法如下:

Assert.AreNotEqual

Assert.AreSame

Assert.AreNotSame

Assert.IsNull

Assert.IsNotNull

Assert.IsTrue

...

在測試方法中右擊,從快捷菜單中可以運行測試。

 

三、使用xUnit測試框架

以同樣的方式創建一個xUnit測試項目,名為xUnitTestSample。為它添加對Calc項目的引用,並將默認的UnitTest1.cs修改如下:

與MSTest和NUnit測試框架不同,在xUnit中,測試類並不需要使用C#特性標識,只有測試方法才需要。

這里包含兩個方法,第一個以[Fact]標識以指明它是一個測試方法;第二個使用[Theory]以及[InlineData]特性標識。[Theory]特性不僅指明該方法是一個測試方法,並且使它具有數據驅動測試的功能,而[InlineData]特性用於提供測試數據。[InlineData]特性通過其構造函數為測試方法提供參數;另外,可以在同一個方法上使用多個[InlineData]特性,多個[InlineData]特性將會使測試方法執行多次。

運行xUnit測試方法與前者相同。

四、使用NUnit測試框架

默認情況下,Visual Studio中的新建項目窗口並沒有為NUnit測試項目提供創建模板,然而,.NET Core CLI(命令行界面工具)支持創建NUnit測試項目,命令如下:

dotnet new nunit -o <項目名稱>

不過,在本例中,我們仍然使用Visual Studio來創建NUnit測試項目。在Visual Studio中創建一個.NET Core控制台應用程序,名為NUnitTestSampe,創建完成后,添加對Calc項目的引用,並添加以下NuGet包。

 

刪除默認創建的Program.cs文件,添加一個類CalcTest,其內容如下:

 NUnit測試框架使用[TestFixture]和[Test]屬性來分別標識測試類與測試方法。運行NUnit測試方法也與前者相同。

總結

本文討論了如何為.NET Core項目創建單元測試,並簡要地了解了MSTest、xUnit、NUnit三種框架的使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM