TestDriven.NET支援多種單元測試架構,像NUnit,MbUnit,MS Team System,這裡我選擇了最為經典的NUnit單元測試架構來介紹TestDriven.NET所支援的一些重要的屬性。TestDriven.NET其實已經支援大部分NUnit的屬性,但是有些屬性現在還不支援。
在我們使用TestDriven.NET測試前,項目必須引用架構的程式集,即nunit.framework.dll,并且在每個包含測試的源檔案中必須使用using語句引用該程式集,像這樣:using NUnit.Framework; 在NUnit中,所有的屬性都包含在Nunit.Framework命名空間裡。
首先我們依次熟悉一下這些屬性。
這個屬性用來修飾測試類,表示這個類包含了測試方法。注意一下使用這個屬性修飾類有一些限制:這個類必須是public,必須有一個預設的構造函數。
這個屬性标記類的某一方法為一個測試方法,此類已經标記為一個TestFixture。一個測試方法的簽名定義如下:
注意這個方法必須沒有參數。如果程式員将測試方法标記為不正确的簽名,它不會運作。
這個屬性用來修飾方法,修飾後這個方法在每個測試方法被調用之前運作的,我們可以用它來重新設定一些變量,在每個方法運作之前指派。
這個屬性用來修飾方法,說明這個方法是在每個測試方法被調用完之後運作的,我們可以用來釋放一些暫存的變量。
這個屬性這個屬性用來修飾類,這個類包含了SetUpAttribute或者TearDownAttribute屬性,必須是public和一個預設的構造函數。隻要使用這個屬性,在其命名空間下,運作測試則首先運作其中SetUpAttribute修飾的方法,在運作測試結束則運作其中TearDownAttribute修飾的方法。注意一個命名空間下隻有一個SetUpFixtureAttribute,如果這個屬性在整個程式集下定義,則在整個程式集下有效。我們常常用它來設定全局的條件。
這個屬性用來修飾方法,修飾後這個方法在fixture任何測試執行之前運作,我們常常用來初始化一些對象等,類似于類中的構造函數。
這個屬性用來修飾方法,修飾後這個方法在fixture任何測試執行之後運作,我們常常用來釋放一些資源。
使用這個屬性表明這個方法會抛出一個預期的異常。用這種方法來指出這個測試執行時會抛出的異常。Type,為期望的異常的精确類型。 第二個是一個期望的異常全名的字元串。 不管是哪一種,在執行測試時,如果它抛出了指定的異常,那麼測試通過。如果抛出一個不同的異常,測試就失敗。如果抛出了一個由期望異常繼承而來的異常,這也是成功的。
平台屬性用于指定測試方法測試方法或測試Fixture運作的平台。平台選擇包括了各種作業系統和.NET Framework版本。使用無大小寫之分的字元串來指定平台,也通過使用Include或Exclude屬性包含或排除運作的平台。也可以指定PlatformAttribute參數。不管是哪一種情況,都可以用多個逗号分隔字元串。
TestFixture文法
Test文法
平台指定值:Win系列、Unix、Linux、 Net、Net-1.0、Net-1.1、Net-2.0、NetCF等。它們可以平台指定值:Win系列、Unix、Linux、 Net、Net-1.0、Net-1.1、Net-2.0、NetCF等。它們可以為大寫,小寫或者混合的。
這個屬性可以将某些測試方法或測試Fixture指定為屬于某個特定的分類。當使用分類時,僅選擇的類别可以測試。沒有選擇的類别測試是不會運作的。 例如我們有些測試需要運作很長的時間,肯定不希望每次都去運作它。你就可以把這些測試歸到某個類别中,然後在NUnit的GUI中将它排除在測試範圍之外。注意這個屬性在TestDriven.NET中不支援。
這個屬性會忽略一個測試方法或測試Fixture,直到它被顯式的選擇運作。如果你指定了它(比如你把滑鼠放在這個方法上,然後選擇RunTest)這個測試方法就會運作。我們常常用于暫時避免的測試方法。
Suite屬性用來定義基于使用者偏好的集合。在測試中不常用,因為架構提供了動态建立機制。
這個屬性表明這個測試方法或測試Fixture會被忽略掉。一段時間内不會運作這個方法或測試Fixture。我們可以将測試方法或Fixture标記為Ignore屬性,運作測試時,就不會執行。 例如我們常常使用這個屬性标記暫時不運作測試或者重構軟體時需要保留的測試來代替使用注釋或重命名的方法,這樣做,測試代碼會和有這個标記的代碼一起編譯,在運作時不會運作标記的測試代碼,這樣保證不會忘記過去測試。
在TestDriven.NET中,如果使用這個屬性,測試顯示結果如下:

好了,有關NUnit單元測試架構的屬性就介紹這麼多了,TestDriven.NET測試工具支援了這裡大多數屬性,我們完全可以使用這個工具完成我們的測試工作。下篇我繼續為大家介紹斷言的基本文法,接下來以一個執行個體實戰一下測試技巧。
部落格園大道至簡
<a href="http://www.cnblogs.com/jams742003/" target="_blank">http://www.cnblogs.com/jams742003/</a>
轉載請注明:部落格園