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