>(Addison-Wesley Professional,2003)一書中,使用下面2個(gè)原則來(lái)定義TDD:">
Exit退出。
View菜單有以下內(nèi)容:
Expand一層層擴(kuò)展現(xiàn)在樹中所選節(jié)點(diǎn)
Collapse 折疊現(xiàn)在樹中選擇的節(jié)點(diǎn)
Expand All遞歸擴(kuò)展樹中所選節(jié)點(diǎn)后的所有節(jié)點(diǎn)
Collapse All遞歸折疊樹中所選節(jié)點(diǎn)后的所有節(jié)點(diǎn)
Expand Fixtures擴(kuò)展樹中所有代表測(cè)試fixture的節(jié)點(diǎn)。
Collapse Fixtures 折疊樹中所有代表測(cè)試fixture的節(jié)點(diǎn)。
Properties 顯示樹中現(xiàn)所選節(jié)點(diǎn)的屬性。
Tools 菜單由這些項(xiàng):
Save Results as XML作為一XML文件保存運(yùn)行測(cè)試的結(jié)果。
Options讓你定制NUnit的行為。
現(xiàn)在看看右邊,你已經(jīng)熟悉Run按鈕和進(jìn)度條。這里還有一個(gè)緊跟Run按鈕的Stop按鈕:點(diǎn)擊這個(gè)按鈕會(huì)終止執(zhí)行正運(yùn)行的測(cè)試。進(jìn)度條下面是一個(gè)文本窗口,在它上方,由以下4個(gè)標(biāo)簽:
Errors and Failures 窗口顯示失敗的測(cè)試。在我們的例子里,這個(gè)窗口是空。
Tests Not Run 窗口顯示沒(méi)有得到執(zhí)行的測(cè)試。
Console.Error 窗口顯示運(yùn)行測(cè)試產(chǎn)生的錯(cuò)誤消息。這些此消息是應(yīng)用程序代碼使用Console.Error輸出流可以輸出的。
Console.Out窗口顯示運(yùn)行測(cè)試打印到Console.Error輸出流的文本消息。
2.2 一些常用屬性
接下來(lái),我將講述這個(gè)框架如何使用.同時(shí)也涉及到一些非常重要的概念,我想其客戶屬性是非常重要的.在NUnit里,有以下幾種屬性:
Test Fixture
Test
下面我將對(duì)每種屬性一一講解.
TestFixtureAttribute
本屬性標(biāo)記一個(gè)類包含測(cè)試,當(dāng)然setup和teardown方法可有可無(wú).(關(guān)于setup 和teardown方法在后面介紹)
做為一個(gè)測(cè)試的類,這個(gè)類還有一些限制
必須是Public,否則NUnit看不到它的存在.
它必須有一個(gè)缺省的構(gòu)造函數(shù),否則是NUnit不會(huì)構(gòu)造它.
構(gòu)造函數(shù)應(yīng)該沒(méi)有任何副作用,因?yàn)镹Unit在運(yùn)行時(shí)經(jīng)常會(huì)構(gòu)造這個(gè)類多次,如果要是構(gòu)造函數(shù)要什么副作用的話,那不是亂了.
舉個(gè)例子
using System; 2
using NUnit.Framework; 3
namespace MyTest.Tests 4{ 5 6 [TestFixture] 7 public class PriceFixture 8 { 9 //
10 }11}
TestAttribute
Test屬性用來(lái)標(biāo)記一個(gè)類(已經(jīng)標(biāo)記為TestFixture)的某個(gè)方法是可以測(cè)試的.為了和先前的版本向后兼容,頭4個(gè)字符(“test”)忽略大小寫.(參看http://nunit.org/test.html)
這個(gè)測(cè)試方法可以定義為:
public void MethodName()
從上面可以看出,這個(gè)方法沒(méi)有任何參數(shù),其實(shí)測(cè)試方法必須沒(méi)有參數(shù).如果我們定義方法不對(duì)的話,這個(gè)方法不會(huì)出現(xiàn)在測(cè)試方法列表中.也是說(shuō)在NUnit的界面左邊的工作域內(nèi),看不到這個(gè)方法.還有一點(diǎn)是這個(gè)方法不返回任何參數(shù),并且必須為Public.
例如:
using System; 2
using NUnit.Framework; 3
4
namespace MyTest.Tests 5{ 6 [TestFixture] 7 public class SuccessTests 8 { 9 [Test] public void Test1()10 { /**//*
*/ }11 }12}
一般來(lái)說(shuō),有了上面兩個(gè)屬性,你可以做基本的事情了.
另外,我們?cè)賹?duì)如何進(jìn)行比較做一個(gè)描述。
在NUnit中,用Assert(斷言)進(jìn)行比較,Assert是一個(gè)類,它包括以下方法:AreEqual,AreSame,Equals
3.如何在.NET中應(yīng)用NUnit
我將舉個(gè)例子,一步一步演示如何去使用NUnit.
第1步.為測(cè)試代碼創(chuàng)建一個(gè)Visual Studio工程。
在Microsoft Visual Studio .NET中,讓我們開始創(chuàng)建一個(gè)新的工程。選擇Visual C#工程作為工程類型,Class Library作為模板。將工程命名為NUnitQuickStart.圖4-1是一個(gè)描述本步驟的Visual Studio .NET。
圖 4-1: 創(chuàng)建第一個(gè)NUnit工程