天天看點

NUnit 入門知識

1、介紹

NUnit 是一個免費開源的(http://www.nunit.org)産品,它提供了一套測試架構和一個測試運作程式(test runner)。注意:test tunner 知道如何尋找具有 [TestFixture] 屬性的類和類中的 [Test] 方法。

2、下載下傳

        ​​http://www.nunit.org/index.php?p=download​​

3、使用 test tunner 的方法:   

    1. NUnit GUI

   它提供一個獨立的NUnit 圖形化工具。

   從菜單Tool/Options中的個性化設定來打開Visual Studio支援。

   2. NUnit 的指令行   

   需要配置Path運作環境。

   3. Visual Studio 的插件

   有幾種能把NUnit 內建到Visual Studio的插件,諸如 

​​http://www.mutantdesign.co.uk/nunit-addin/​​

   安裝好NUnit後,環境是XP的,發現無法啟動,修改一下配置後才能運作

   修改NUnit.exe.config,在

   1. 在 <configuration> 下 加 

    <startup> 

     <requiredRuntime version="v4.0.30319" /> 

    </startup>

    2. 在 <runtime> 加

    <runtime>

     …… 

    <loadFromRemoteSources enabled="true" /> 

     …… 

    </runtime>

4、測試應遵循的方法

    盡量不要破壞原有的代碼結構,即不要在原代碼中添加一些備援的測試代碼。

    測試子產品應盡可能完整地展現測試結果。

    測試子產品不應用完即扔掉,要儲存以備後續的維護測試。

5、在VS中啟動NUnit調試

    1.建立一個類庫項目。

    2.在解決方案中的項目圖示上右擊,選擇“屬性”。

    3.點選左邊的“調試”标簽

    4.在“啟動操作”中選擇“啟動外部程式”,并指明NUnit程式的運作路徑。

    5.在啟動選項中的“工作目錄”下,指明目前類庫項目的DLL檔案的所在路徑。

NUnit 入門知識

6、NUnit界面顯示

在右邊有一個進度條,如果所有測試案例運作成功,就為綠色,反之如果有一個不成功,則為紅色,但也有黃色的.

    綠色 描述目前所執行的測試都通過 

    黃色 意味某些測試忽略,但是這裡沒有失敗 

    紅色 表示有失敗

左邊的樹狀目錄是我們們編寫的每一個測試單元。

底部的狀态條    狀态:當所有測試完成時,狀态變為Completed.運作測試中,狀态是Running: <test-name>

    Test Cases:說明加載的程式集中測試案例的總個數。這也是測試樹裡葉子節點的個數。 

    Tests Run: 已經完成的測試個數。 

    Failures: 到目前為止,所有測試中失敗的個數. 

    Time: 顯示運作測試時間(以秒計)

7、NUnit中常用的Attribute

1.TestFixture

用來修飾測試類。這個屬性标記一個類包含了測試方法。

    被TestFixtureAttribute修飾的類需滿足以下限制

        a.必須是一個public類型,否則NUnit不會識别它。 

        b.它必須有一個預設的構造子,否則Nunit不能建構他。 

        c.構造子不應該有任何方面的負面影響,因為在一個對話的過程中,NUnit可能構造類多次。 

 .Test

    用來修飾測試方法。Test屬性标記某個類的某個方法為一個測試方法,而且此類必需已經标記為一個TestFixture。

注意:測試方法必須沒有參數

  3.SetUp

     用來修飾方法。所屬的類必需已經标記為一個TestFixture。一個TestFixture可以僅有一個SetUp方法。如果有多個定義,        TestFixture也會編譯成功,但是測試不會運作。SetUpAttribute标記的方法是在每個測試方法被調用之前來完成的。

     4.TearDown

    用來修飾方法。所屬的類必需已經标記為一個TestFixture。一個TestFixture可以僅有一個TearDown方法。如果有多個定義,     TestFixture也會編譯成功,但是測試不會運作。被TearDownAttribute修飾的方法是每個測試方法被調用之後來執行的。

  5.TestFixtureSetUp

    用來修飾方法。所屬的類必需已經标記為一個TestFixture。這些個屬性标記的方式在fixture任何測試執行之前完成。         TestFixture可以僅有一個TestFixtureSetUp方法。如果定義了多個,TestFixture可以成功編譯,但是測試不會被執行。

  6.TestFixtureTearDown

    用來修飾方法。所屬的類必需已經标記為一個TestFixture。這些個屬性标記的方式在fixture任何測試執行之後完成。TestFixture 可以僅有一個TestFixtureTearDownAttribute方法。如果定義了多個,TestFixture可以成功編譯,但是測試不會被執行。

  7.ExpectedException

    修飾方法,用來測試一個方法是否抛出了指定的異常。本屬性有兩種重載方式。第一種是一個Type,此Type為期望的異常的精确類型。 第二種是一個期望的異常全名的字元串。(車延祿)

    在執行測試時,如果它抛出了指定的異常,那麼測試通過。如果抛出一個不同的異常,測試就失敗。如果抛出了一個由期望異常繼承而來的異常,這也是成功的。

  8.Category

    修飾方法或修飾類。用來把測試分組,可以使用NUnit的Categories頁籤選擇要測試的組,或排除一些組。

  9.Explicit

    用來修飾類或方法。Explicit屬性會忽略一個測試或測試Fixture,直到它被顯式的選擇運作。。如果test和test fixture在執行的過程中被發現,就忽略他們。是以,這樣一來進度條顯示為黃色,因為有test或test fixture忽略了。

  10.Ignore

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

    這個特性用來暫時不運作一個測試或fixture。比起注釋掉測試或重命名方法,這是一個比較好的機制,因為測試會和餘下的代碼一起編譯,而且在運作時有一個不會運作測試的标記,這樣保證不會忘記測試。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
namespace TestUnit
{
    [TestFixture]
    public class TestLarge
    {
        [Test]
        public void LargestOf3()
        {
            Assert.AreEqual(9, Program.Largest(new int[] { 7, 8, 9 })); // 測試“9”在最後一位
            Assert.AreEqual(9, Program.Largest(new int[] { 7, 9, 8 })); // 測試“9”在中間位
            Assert.AreEqual(9, Program.Largest(new int[] { 9, 7, 8 })); // 測試“9”在第一位
            Assert.AreEqual(9, Program.Largest(new int[] { 9, 9, 8 })); // 測試存在重複的“9”
            Assert.AreEqual(9, Program.Largest(new int[] { 9 }));     // 測試list中隻存在“9”一個元素

            // 測試list中負數的存在,若類Cmp中Largest方法的 int max=0; 則會檢測抱錯
            Assert.AreEqual(-7, Program.Largest(new int[] { -9, -8, -7 }));
        }

        [Test, ExpectedException(typeof(ArgumentException))]
        public void TestEmpty()
        {
            // 測試list數組為空(長度為0)時,是否抛出異常
            Program.Largest(new int[] { });
        }
    }
}      

繼續閱讀