您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > Nunit
掌握單元測(cè)試工具Nunit教程
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/4/7 16:12:52 ] 推薦標(biāo)簽:

  過程

  測(cè)試代碼必須做以下幾件事情:

  準(zhǔn)備測(cè)試所需的條件

  調(diào)用要測(cè)試的方法

  驗(yàn)證被測(cè)方法的行為和期望的行為是否一致

  完成后清理各種資源

  為了使用NUnit框架,需要做這些工作:

  1.使用using聲明引用必要的NUnit類(并添加一個(gè)指向NUnitDll的引用)

  2.定義一個(gè)測(cè)試類,必須是Public的、包換一個(gè)public的沒有參數(shù)的構(gòu)造函數(shù),并且在類定義上加上[TestFixture]attribute標(biāo)記

  3.在測(cè)試類中包含用[Test]attribute標(biāo)記的方法。

  特性

  在使用NUnit框架時(shí),除了上面提到的[TestFixture]和[Test]特性外,還有一些有用的特性。靈活使用這些特性,將有助于提高測(cè)試代碼開發(fā)的效率。

  1. Per-method的Setup和Teardown

  [Setup]:用此Attribute指定的方法用于環(huán)境的建立,NUnit在調(diào)用每個(gè)[Test]方法之前,將調(diào)用此特性標(biāo)記的方法

  [Teardown]:和[Setup]一樣,只是調(diào)用的時(shí)機(jī)是在每個(gè)[Test]方法完成后,用于環(huán)境的清理。

  2. Per-class Setup和Per-class Teardown

  [TestFixtureSetup]以及[TestFixtureTearDown]特性和上述的[Setup]以及[Teardown]類似,只是其作用于整個(gè)[TestFixture]類而已?梢允褂眠@兩個(gè)特性標(biāo)記的方法對(duì)整個(gè)test class設(shè)置和清理環(huán)境。

  3. 使用Categories分類

  [Category(“分類名”)]用于指定某個(gè)測(cè)試方法所屬的“類型”。用此特性將各個(gè)測(cè)試方法分類后,可以在NUnit環(huán)境中指定需要執(zhí)行的類型。

  可以將此特性寫在[Test]特性一起,如:

  [Test, Category(“test_0001”)]

  也可以分開兩行:

  [Test]

  [Category(“test_0001”)]

  Category還有一個(gè)Explicit屬性,可以顯式排除該Category的運(yùn)行(除非在NUnit GUI中指定),寫法如下:

  [Category(“test_0001”, Explicit=true)]

  4.測(cè)試預(yù)期的異常:ExpectedException

  對(duì)測(cè)試而言有兩種異常:從測(cè)試代碼拋出的異常;由于某個(gè)模塊錯(cuò)誤而引發(fā)的異常.

  第二種異常會(huì)在NUnit中捕獲并作測(cè)試失敗處理。而有時(shí)我們需要測(cè)試被測(cè)試方法是否拋出了期望的異常(例如,特意傳入的錯(cuò)誤參數(shù)),可以用以下方法。

  [ExpectedException(typeof(SomeException))]或:[Test,ExpectedException(typeof(SomeException))]

  注意,一旦期望的異常拋出了,剩余的代碼會(huì)被跳過。軟件測(cè)試

  5.臨時(shí)忽略一些測(cè)試:Ignore

  當(dāng)你寫了一些測(cè)試代碼,但并不打算馬上執(zhí)行時(shí),可以使用Ignore特性。

  [Test,Ignore(“message”)]

  這個(gè)測(cè)試將被跳過,并且在NUnit GUI中給出黃色的狀態(tài)欄。

  技巧

  有六個(gè)值得測(cè)試的具體部位,它們能夠提高你的測(cè)試水平。這六個(gè)方面可以統(tǒng)稱為Right_BICEP:

  Right : 結(jié)果是否正確(Right)

  對(duì)于測(cè)試而言,首要的也是明顯的任務(wù)是查看所期望的結(jié)果是否正確-驗(yàn)證結(jié)果。

  這里的結(jié)果是指確認(rèn)代碼所做的和你的期望是一致的。

  B : 邊界(boundary)條件是否正確

  邊界條件包括許多內(nèi)容,將在下一節(jié)(2.3.邊界條件)中集中描述。軟件測(cè)試 

    I : 是否可以檢查反向(inverse)關(guān)聯(lián)

  對(duì)一些方法,可以用反向的邏輯關(guān)系來驗(yàn)證它們。例如,為了檢查某條記錄是否成功的插入了數(shù)據(jù)庫,可以通過查詢這條記錄來驗(yàn)證,等等。

  值得注意的是,當(dāng)同時(shí)編寫原方法和它的反向測(cè)試時(shí),一些BUG可能會(huì)被兩者中都有的錯(cuò)誤所掩飾。在可能的情況下,應(yīng)該用不同的原理來實(shí)現(xiàn)反向測(cè)試。

  C : 是否可以使用其它方法來跨檢查(cross-check)結(jié)果

  [NextPage]

  E : 錯(cuò)誤條件(error condition)是否可以重現(xiàn)

  應(yīng)該能夠通過強(qiáng)制引發(fā)真實(shí)世界中的錯(cuò)誤-網(wǎng)絡(luò)斷開、程序崩潰等-來測(cè)試代碼如何處理這些問題。簡單的無效參數(shù)之類的錯(cuò)誤會(huì)很簡單,但要模擬復(fù)雜的錯(cuò)誤需要一些特殊的技術(shù)。在下面的文字中,將討論使用Mock技術(shù)來解決如何強(qiáng)制產(chǎn)生錯(cuò)誤的問題。

  P : 性能(performance)方面是否滿足條件

  這里的性能特征并不是指程序的性能本身,而是指性能的那種“隨著規(guī)模增大,問題越來越復(fù)雜”的趨勢(shì)。我們應(yīng)該使用一個(gè)性能特性的快速回歸測(cè)試,避免出現(xiàn)某些修改使得程序變得很慢卻無法對(duì)其進(jìn)行定位的情況。

軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd