>(Addison-Wesley Professional,2003)一書中,使用下面2個(gè)原則來定義TDD:">
第2步.增加一個(gè)NUnit框架引用
在Microsoft Visual Studio .NET里創(chuàng)建這個(gè)例子時(shí),你需要增加一個(gè)NUnit.framework.dll引用,如下:
在Solution Explorer右擊引用,然后選擇增加引用
NUnit.framework組件,在Add Reference對(duì)話框中按Select和OK按鈕。
圖4-2 描述了這步:
圖 4-2: 增加一個(gè) NUnit.framework.dll 引用到工程
第3步.為工程加一個(gè)類.
為工程加一個(gè)NumbersFixture類。這里是這個(gè)例子的代碼。
using System;
using NUnit.Framework;
namespace NUnitQuickStart
{
[TestFixture]
public class NumersFixture
{
[Test]
public void AddTwoNumbers()
{
int a=1;
int b=2;
int sum=a+b;
Assert.AreEqual(sum,3);
}
}
}
第4步.建立你的Visual Studio 工程,使用NUnit-Gui測試
從程序->NUnit2.2打開NUnit-gui,加載本本工程編譯的程序集.
為了在Visual Studio .NET中自動(dòng)運(yùn)行NUnit-Gui,你需要建立NUnit-Gui作為你的啟動(dòng)程序:
在 Solution Explorer里右擊你的NunitQuickStart工程。
在彈出菜單中選擇屬性。
在顯示的對(duì)話框的左面,點(diǎn)擊Configuration Properties夾
選擇出現(xiàn)在Configuration Properties夾下的Debugging。
在屬性框右邊的Start Action部分,選擇下拉框的Program作為Debug Mode值。
按Apply按鈕
設(shè)置NUnit-gui.exe 作為Start Application。,你既可以鍵入nunit-gui.exe的全路徑,也可使用瀏覽按鈕來指向它。
圖4-3 幫助描述本步驟:
圖 4-3:將NUnit-Gui 作為工程的測試運(yùn)行器
第5步.編譯運(yùn)行測試.
現(xiàn)在編譯solution。成功編譯后,開始應(yīng)用程序。NUnit-Gui測試運(yùn)行器出現(xiàn)。當(dāng)你第一次開始NUnit-Gui,它打開時(shí)沒有測試加載。從File菜單選擇Oprn,瀏覽NUnitQuickStart.dll的路徑。當(dāng)你加載了測試的程序集,測試運(yùn)行器為加載的程序集的測試產(chǎn)生一個(gè)可見的表現(xiàn)。在例子中,測試程序集僅有一個(gè)測試,測試程序集的結(jié)構(gòu)如圖4-4所示:
圖 4-4: 測試程序集的測試在 NUnit-Gui中的視圖
按Run按鈕。樹的節(jié)點(diǎn)變?yōu)榫G色,而且測試運(yùn)行器窗口上的進(jìn)度條變綠,綠色代表成功通過。
4.其他的一些核心概念
上面的例子介紹了基本的NUnit特性和功能. TestFixture, Test, 和 Assert是3個(gè)基本的特征,我們可以用這些特性進(jìn)行程序員測試了.但是有的時(shí)候,你覺得這3個(gè)遠(yuǎn)遠(yuǎn)不夠,比如有的時(shí)候打開一個(gè)數(shù)據(jù)庫連接多次,有沒有只讓它打開一次的方法呢?如果我想把測試分類,應(yīng)該怎樣實(shí)現(xiàn)呢?如果我想忽略某些測試,又應(yīng)該如何去完成呢?不用擔(dān)心,NUnit已經(jīng)有這樣的功能了.
下面我們一一作出回答.
SetUp/TearDown 屬性
在早期給的test fixture定義里,我們說test fixture的測試是一組常規(guī)運(yùn)行時(shí)資源.在測試完成之后,或是在測試執(zhí)行種,或是釋放或清除之前,這些常規(guī)運(yùn)行時(shí)資源在一確定的方式上可能需要獲取和初始化.NUnit使用2個(gè)額外的屬性:SetUp 和TearDown,支持這種常規(guī)的初始化/清除.我們上面的例子來描述這個(gè)功能.讓我們增加乘法.
using System;
using NUnit.Framework;
namespace NUnitQuickStart
{
[TestFixture]
public class NumersFixture
{
[Test]
public void AddTwoNumbers()
{
int a=1;
int b=2;
int sum=a+b;
Assert.AreEqual(sum,3);
}
[Test]
public void MultiplyTwoNumbers()
{
int a = 1;
int b = 2;
int product = a * b;
Assert.AreEqual(2, product);
}
}
}
我們仔細(xì)一看,不對(duì),有重復(fù)的代碼,如何去除重復(fù)的代碼呢?我們可以提取這些代碼到一個(gè)獨(dú)立的方法,然后標(biāo)志這個(gè)方法為SetUp 屬性,這樣2個(gè)測試方法可以共享對(duì)操作數(shù)的初始化了,這里是改動(dòng)后的代碼:
using System;
using NUnit.Framework;
namespace NUnitQuickStart
{
[TestFixture]
public class NumersFixture
{
private int a;
private int b;
[SetUp]
public void InitializeOperands()
{
a = 1;
b = 2;
}
[Test]
public void AddTwoNumbers()
{
int sum=a+b;
Assert.AreEqual(sum,3);
}
[Test]
public void MultiplyTwoNumbers()