談到單元測試,任何一個開發或是測試人員都不會以爲陌生。我想大多數的同窗也都是接觸過各類單元測試框架。關於單元測試的重要性,應該不會有太多的質疑。這個系列,我向你們介紹一下xUnit.Net的使用。就讓咱們一塊兒來玩轉xUnit.Net吧。本文要討論的內容以下:html
有不少小夥伴常常會提到所謂「框架」,框架這樣的概念有不少好比:XX開發框架,ORM框架,Selenium框架,Mock框架以及咱們要提到的單元測試框架。這些概念隨處可見,在我看來學習一個技術框架的開始,最好是瞭解一下它爲咱們提供了什麼?那麼,通常使用者指望的單元測試框架應該爲咱們提供哪些功能呢?git
以上4個功能是每個單元測試框架都會提供的能力,並且xUnit.Net框架(也包括常見的測試框架)還提供了其餘炫酷的功能。關於單元測試的質量,實施的難度... ... 等話題我會在本系列最後的總結中跟你們分享我的的感覺和經驗。那麼,就讓咱們一步步的開始咱們的單元測試之旅吧。github
這個部分就和你們一塊兒來簡要的瀏覽一下.NET平臺下面幾種常見的單元測試框架,關於每種框架的對比網上已經有過無數的對照表了這裏我就不在贅述了:編程
xUnit.Net的由來:NUnit的創造者Jim Newkirk公佈了一個新的單元測試框架,叫作xUnit.net。這是一個以NUnit的接班人自許的新框架,做者打算消除NUnit的錯誤和缺點,並在框架中加入一些最佳實踐和擴展能力。xUnit.Net是開源的GitHub地址:https://github.com/xunit/xunit。框架
在單元測試的Attribute方面xUnit.Net作了一些精簡,圖中咱們能夠看到xUnit.Net有了如下幾個不一樣於其餘單元測試框架的地方:函數
斷言是每一個單元測試框架的另外一個重要功能,而在這一方面xUnit.Net簡化了不少其餘框架中略微重複的功能。與此同時也提供了靈活的擴展方式給使用者,關於如何擴展xUnit.Net我會在隨後的文章中詳細的介紹。post
這一部份內容在我另外一個系列《Selenium For C# 教程》的第一篇《[小北De編程手記] : Lesson 01 - Selenium For C# 之 環境搭建》中已經有所描述,這裏再重複一下:單元測試
Step 01: 打開你的VS2013,選擇"Extensions and Updates",搜索並安裝xUnit.Net 項目模板學習
Step 02: 新建一個xUnit.net 的單元測試項目(Demo.SeleniumTest),點擊「ok」。測試
Step 03:右鍵項目的References,並選擇Manager NuGet Packages... , 下載最新版本的xUnit.Net. , 以及Selenium 的驅動包。
搜索並安裝最新版的xUnit.Net。
PS:也能夠不下載模板,直接建立一個類庫,用Nuget添加xUnit.Net的引用便可。
前面說了那麼多,下面咱們就來看看一個簡單的xUnit.Net測試用例是什麼樣子:
1 using System; 2 using System.Collections.Generic; 3 using Xunit; 4 5 public class EqualExample 6 { 7 [Fact] 8 public void EqualStringIgnoreCase() 9 { 10 string expected = "TestString"; 11 string actual = "teststring"; 12 13 Assert.False(actual == expected); 14 Assert.NotEqual(expected, actual); 15 Assert.Equal(expected, actual, StringComparer.CurrentCultureIgnoreCase); 16 } 17 }
上面的例子咱們能夠看到,測試類沒有標籤,咱們只是標記了須要測試的方法(PS:通常系列的第一篇貌似都沒什麼養分)。這一篇就先到這裏吧。
小北De系列文章:
《[小北De編程手記] : Selenium For C# 教程》
《[小北De編程手記]:C# 進化史》(未完成)
《[小北De編程手記]:玩轉 xUnit.Net》(未完成)