一、概述
NUnit是一款的開(kāi)源回歸測(cè)試框架,我在《NUnit學(xué)習(xí)筆記》一文中已對(duì)其基本使用方法進(jìn)行了簡(jiǎn)單的介紹。但除了TestFixture、TestFixtureSetUp、Test和TestFixtureTearDown這四個(gè)常用的屬性外,NUnit還提供了ExpectedException、Ignore、Suite、Category和Explicit等屬性用于測(cè)試。本文的目的是對(duì)這些屬性進(jìn)行介紹。
在介紹開(kāi)始之前,還需要說(shuō)明一些事情,即本文只提供了C#代碼示例,而沒(méi)有提供VB、J#或Delphi代碼示例,而且在示例的編寫(xiě)過(guò)程中雖然也使用了Visual Studio.net 2003和Delphi 2005作為編輯器,但文中絕不會(huì)涉及項(xiàng)目創(chuàng)建的內(nèi)容。此外本文的示例都是在NUnit可視化環(huán)境下測(cè)試的,對(duì)于其運(yùn)行效果,如無(wú)必要,本文將僅以文字形式進(jìn)行說(shuō)明。
二、ExpectedException
ExpectedException屬性用于測(cè)試是否會(huì)拋出指定的異常,若拋出則NUnit的狀態(tài)條為綠色,反之為紅色。
示例代碼:
using System;
using NUnit.Framework;
namespace NUnitTest
{
[TestFixture]
public class Test1
{
[Test]
[ExpectedException(typeof(Exception))]
public void TestExpectedException()
{
string s = "";
if (s != "")
throw new Exception();
}
}
}
測(cè)試效果:狀態(tài)條為紅色。
具體說(shuō)明:由于字符串s在初始化時(shí)已賦值為"",因此在判斷"s != """時(shí)條件自然不會(huì)成立,這樣不會(huì)拋出異常,狀態(tài)條當(dāng)然也不會(huì)為綠色了。如果想讓狀態(tài)條顯示為綠色,將判斷條件改為"s == """可以了。
三、Ignore
Ignore屬性可以供類和方法使用,使用后類或方法在NUnit測(cè)試中會(huì)被忽略,也是說(shuō),對(duì)于暫時(shí)不想運(yùn)行的測(cè)試類或測(cè)試方法,可以通過(guò)Ignore屬性將其忽略掉。
示例代碼1:
[TestFixture]
[Ignore("class test ignore")]
public class Test2
{
[Test]
public void TestIgnore()
{}
}
示例代碼2:
[TestFixture]
public class Test2
{
[Test]
[Ignore("function test ignore")]
public void TestIgnore()
{}
}
測(cè)試效果:兩個(gè)示例被執(zhí)行后狀態(tài)條都會(huì)顯示為黃色。但如果你在測(cè)試時(shí)選擇的是Test2節(jié)點(diǎn),會(huì)發(fā)現(xiàn)示例一執(zhí)行后,只有Test2節(jié)點(diǎn)前的圓點(diǎn)顯示為黃色,狀態(tài)條沒(méi)有發(fā)生任何變化,而示例二則會(huì)將Test2和TestIgnore節(jié)點(diǎn)前的圓點(diǎn)都變成黃色,狀態(tài)條也顯示成黃色。這是由于前者忽略的是整個(gè)類的測(cè)試,而后者忽略的只是測(cè)試方法。