Nunit-Gui

Nunit-Gui

nunit-gui.exe是一圖形運行器。它類似windows瀏覽器一樣顯示測試,並且提供一個測試成功或失敗的可視化標記。

簡介

它能夠讓你有選擇性的運行單個測試或單個套件,並且當你修改以及編譯你代碼時它會自動重新載入。下面的截屏是nunit-gui正在運行與前面例子相同的mock-assembly.dll.

正如你所見,沒有運行的測試標記為一個黃色的圓圈,而那些成功運行顏色為綠色。如果任何測試失敗,他們會標記為紅色。

NUnit屬性

TestFixture 屬性

本屬性標記一個類包含測試。做為一個測試的類,這個類還有一些限制:

1、必須是Public,否則NUnit看不到它的存在。

2、它必須有一個預設的構造函式,否則是NUnit不會構造它。

3、構造函式應該沒有任何副作用,因為NUnit在運行時經常會構造這個類多次。

Test 屬性

Test屬性用來標記一個類(已經標記為TestFixture)的某個方法是可以測試的。

1、測試方法必須為Public。

2、測試方法必須沒有參數。

3、測試方法不返回任何參數。

SetUp/TearDown 屬性

用於在測試開始時初始化,和測試後清除。標記為SetUp/TearDown 屬性方法必須為public。

ExpectedException屬性

這裡是一個驗證這個假設的測試。在這個屬性里,你可以在執行過程中捕獲你期望的異常類型。如果這個方法在沒有拋出期望異常的情況下完成了,這個測試失敗。使用這個屬性幫助我們寫程式設計師測試驗證邊界條件(Boundary Conditions)。

Ignore 屬性

由於種種原因,有一些測試我們不想運行。當然,這些原因可能包括你認為這個測試還沒有完成,這個測試正在重構之中,這個測試的需求不是太明確。但你有不想破壞測試,不然進度條可是紅色的喲。怎么辦?使用Ignore屬性。你可以保持測試,但又不運行它們。

TestFixtureSetUp / Down屬性

有時,一組測試需要的資源太昂貴。例如,資料庫連線可能是一個關鍵資源,在一個test fixture的每個測試中,打開/關閉資料庫連線可能非常慢。這就是我在開始提到的問題。

如何解決?NUnit有一對類似於前面討論的SetUp/TearDown的屬性: TestFixtureSetUp/TestFixtureTearDown。正如他們名字表明的一樣,這些屬性用來標記為整個test fixture初始化/釋放資源方法一次的方法。

例如,如果你想為所有test fixture的測試共享相同的資料庫連線對象,我們可以寫一個打開資料庫連線的方法,標記為TestFixtureSetUp屬性,編寫另外一個關閉資料庫連線的方法,標記為TestFixtureTearDown屬性。

Explicit屬性

本屬性忽略一個test和test fixture,直到它們顯式的選擇執行。如果test和test fixture在執行的過程中被發現,就忽略他們。所以,這樣一來進度條顯示為黃色,因為有test或test fixture忽略了。

Category屬性

對於測試來說,你有的時候需要將之分類,此屬性正好就是用來解決這個問題的。

測試生命周期

FixtureSetUp

SetUp

Test Method1

TearDown

SetUp

Test Method2

TearDown

FixtureTearDown

Assert Class

提供了一系列的 static methods,讓你可以用來驗證主要程式的結果與預期的是否一樣。

常用的 Assert 斷言有:

1、Assert.AreEqual(object expected,object actual[string message]):驗證兩個對象是否相等,如Assert.AreEqual(2,1+1);

2、Assert.AreSame(object expected,object actual[string message]):驗證兩個引用是否指向同一對象,如

object expected=new object();

object actual =expected;

Assert.AreSame(expected,actual);

3、Assert.IsFalse(bool):驗證bool值是否為false,如Assert.IsFalse(false);

4、Assert.IsTrue(bool):驗證bool值是否為true,如Assert.IsTrue(true);

5、Assert.IsNotNull(object):驗證對象是否不為null,如Assert.IsNotNull(new object());

6、Assert.IsNull(object):驗證對象是否為null,如Assert.IsNull(null);

NUnit使用方法

NUnit的官方網站下載地址為:www.nunit.org,如果是結合.net使用,最好下載win.net版。

在vs2005中新建一個class library工程,add 一個class,定義一個取數組最大值的函式,具體定義如下:

public class Class1

{

public int FindMax(int[] arr)

{

int i;

int max=arr[0];

for(i =1; i<arr.Length; i++)

{

if(arr >max)

{

max =arr ;

}

}

return max;

}

}

第二步:就該編寫test code了。add 一個新的class,命名為Class1Test。再編寫code之前,需要給該工程添加一個NUnit的引用,具體為:右鍵點擊 reference->add reference->選擇nunit.framework,然後在Class1Test檔案中添加一個引用:using NUnit.Framework。當然,添加引用的前提是已經安裝了NUnit了。下面我們就可以開始code test了。

[TestFixture]

public class Class1Test

{

[Test]

public void FindMaxTest()

{

int[] arr1 ={ 1, 3, 10, 4 };

int[] arr2 ={ 3, 10, 4, 1 };

int[] arr3 ={ 1, 10, 4, 3 };

int[] arr4 ={ -1, -3, -5 };

Class1 myclass =new Class1();

Assert.AreEqual(10, myclass.FindMax(arr1));

Assert.AreEqual(10, myclass.FindMax(arr2));

Assert.AreEqual(10, myclass.FindMax(arr3));

Assert.AreEqual(-1, myclass.FindMax(arr4));

}

}

我們先來解析一下這個類吧:[TestFixture]是NUnit的一個重要的屬性,可以說是NUnit的一個標記吧,它向編譯工具“宣布”:我要測試啦。[Test]一般用在一個函式之前,而且這個函式必須是public類型,而且無返回值,即void。

類與測試類寫完了。編譯好之後,可以得到一個dll檔案。

打開NUnit,點擊file->open,選擇剛剛編譯的dll檔案,這樣就把檔案載入到NUnit了,在它的界面的左邊,我們可以看到剛才編寫的測試函式FindMaxTest,選擇工程項目,或是檔案,或是測試函式,然後點擊界面右邊的Run,如果一路綠燈,測試通過!

相關詞條

熱門詞條

聯絡我們