編譯項目生成dll。我們可以在NUnit主界面上點擊[Project]->[Add Assembly...]來添加剛才編譯生成的dll,加載成功后界面如下所示:
	
	  點擊界面上的[Run]按鈕可以開始測試了。注意這種方式下是測試所有的測試方法,如果我們只想測試某幾個方法,可以勾選方面前面的復(fù)選框(默認(rèn)情況下復(fù)選框不出現(xiàn),需要按照點擊[Tools]->[Setting]打開設(shè)置界面,然后點擊在[GUI]下面找到[Tree Display],勾選上“Show CheckBoxes”即可)。
	  如果我們只是想單獨測試某個方法,那更簡單了——直接雙擊那個測試方法即可。
	  有時候我們進行測試時還會用到一些config文件里面的配置信息,如在app.config/web.config中保存數(shù)據(jù)庫連接字符串信息及其他的配置信息,為了能讓NUnit測試時能讀取app.config/web.config中保存的配置信息,我們需要對NUnit進行配置。
	  為了演示,我們制定以下信息:
	  項目名稱:UnitTestDemo
	  項目位置:D:BlogCodeUnitTestDemo
	  項目編譯模式(Debug/Release):Debug
	  為了演示剛才的如何對config文件中保存的數(shù)據(jù)進行測試,我們在剛才的代碼基礎(chǔ)上編寫了三個測試用例,代碼如下:
	[csharp] view plaincopy
	    [Test] 
	    public void Test0_51CTOBlog() 
	    { 
	        StringAssert.AreEqualIgnoringCase(ConfigurationManager.AppSettings["51ctoBlog"], "http://zhoufoxcn.blog.51cto.com"); 
	    } 
	     
	    [Test] 
	    public void Test0_CSDNBlog() 
	    { 
	        StringAssert.AreEqualIgnoringCase(ConfigurationManager.AppSettings["CSDNBlog"], "http://blog.csdn.net/zhoufoxcn"); 
	    } 
	     
	    [Test] 
	    public void Test0_SinaWeiBo() 
	    { 
	        StringAssert.AreEqualIgnoringCase(ConfigurationManager.AppSettings["SinaWeiBo"], "http://weibo.com/zhoufoxcn"); 
	    } 
	  同時在app.config文件的appSettings節(jié)點增加以下數(shù)據(jù):
	[csharp] view plaincopy
	    <appSettings> 
	        <add key="51ctoBlog" value="http://zhoufoxcn.blog.51cto.com"/> 
	        <add key="CSDNBlog" value="http://blog.csdn.net/zhoufoxcn"/> 
	        <add key="SinaWeiBo" value="http://weibo.com/zhoufoxcn"/> 
	    </appSettings> 
如果不在NUnit上做任何設(shè)置,我們會得到錯誤的結(jié)果,如下圖所示:
	
這時,我們可以按照如下步驟配置,點擊[Project]-[Edit...]打開如下界面:
	
	  在上圖的界面中設(shè)置ApplicationBase為當(dāng)前要測試的dll所在的路徑,本例中為:D:BlogCodeUnitTestDemoinDebug(注意如果復(fù)制全路徑到文本框中NUnit會自動更改為相對路徑),因為當(dāng)前項目是名為UnitTestDemo的類庫項目,所以對應(yīng)config文件名稱為UnitTestDemo.dll.config,將其填入Configuration File Name后面的文本框中,然后我們再次點擊[Run]按鈕會看到測試通過。
	總結(jié)
	  作為xUnit體系中的一員,NUnit確實給.Net開發(fā)人員進行單元測試帶來了不少方便,在早期我們一直都是使用NUnit進行單元測試的。但是也存在著一些不足之處,比如:1.在xUnit體系中的JUnit是在測試每個方法時都是新生成一個實例,而在NUnit中確實一個TestFixture只會生成一個實例,這樣一來如果對要包含單元測試類中的實例數(shù)據(jù)進行更改會可能會影響到其它的測試方法(像JUnit那樣每次都生成一個實例則不會產(chǎn)生這種情況)。2.早期大多數(shù)人以為像JUnit中一樣,[SetUp]、[TearDown]只會在所有測試前、后分別執(zhí)行一次,實際情況是在每個測試前、后都會執(zhí)行一次,為了達到JUnit中[SetUp]、[TearDown]這樣的效果,只能新增TestFixtureSetUp、TestFixtureTearDown屬性。除此之外,還存在一些缺點和不足。
	  所以本篇只是簡單介紹了NUnit的一些用法,雖然NUnit提供了相當(dāng)多的斷言及Attribute,但實際用到的并不多,在這里介紹它是為介紹另一個.NET單元測試工具作鋪墊。