測試語法之屬性介紹

2021-05-22 21:19:05 字數 4023 閱讀 6216

這個簡短的系列一一講解一下.net下測試的相關知識,希望對初學者有所幫助。

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,必須有乙個預設的建構函式。

using system;

using nunit.framework;

namespace testdrivennet

}

這個屬性標記類的某一方法為乙個測試方法,此類已經標記為乙個testfixture。乙個測試方法的簽名定義如下:

[test]

public void testmethod()

注意這個方法必須沒有引數。如果程式設計師將測試方法標記為不正確的簽名,它不會執行。

這個屬性用來修飾方法,修飾後這個方法在每個測試方法被呼叫之前執行的,我們可以用它來重新設定一些變數,在每個方法執行之前賦值。

[setup]

public void init()

這個屬性用來修飾方法,說明這個方法是在每個測試方法被呼叫完之後執行的,我們可以用來釋放一些暫存的變數。

[teardown]

public void dispose()

這個屬性這個屬性用來修飾類,這個類包含了setupattribute或者teardownattribute屬性,必須是public和乙個預設的建構函式。只要使用這個屬性,在其命名空間下,執行測試則首先執行其中setupattribute修飾的方法,在執行測試結束則執行其中teardownattribute修飾的方法。注意乙個命名空間下只有乙個setupfixtureattribute,如果這個屬性在整個程式集下定義,則在整個程式集下有效。我們常常用它來設定全域性的條件。

[setupfixture]

public class

mysetupclass

[teardown]

public void runafteranytests()

}

這個屬性用來修飾方法,修飾後這個方法在fixture任何測試執行之前執行,我們常常用來初始化一些物件等,類似於類中的建構函式。

[testfixturesetup]

public void fixtureinit()

這個屬性用來修飾方法,修飾後這個方法在fixture任何測試執行之後執行,我們常常用來釋放一些資源。

[testfixtureteardown]

public void fixturedispose()

使用這個屬性表明這個方法會丟擲乙個預期的異常。用這種方法來指出這個測試執行時會丟擲的異常。type,為期望的異常的精確型別。 第二個是乙個期望的異常全名的字串。 不管是哪一種,在執行測試時,如果它丟擲了指定的異常,那麼測試通過。如果丟擲乙個不同的異常,測試就失敗。如果丟擲了乙個由期望異常繼承而來的異常,這也是成功的。

[test]

[expectedexception(typeof(invalidoperationexception))]

public void expectanexceptionbytype()

[test]

[expectedexception("system.invalidoperationexception")]

public void expectanexceptionbyname()

平台屬性用於指定測試方法測試方法或測試fixture執行的平台。平台選擇包括了各種作業系統和.net framework版本。使用無大小寫之分的字串來指定平台,也通過使用include或exclude屬性包含或排除執行的平台。也可以指定platformattribute引數。不管是哪一種情況,都可以用多個逗號分隔字串。

testfixture語法

[testfixture]

[platform("net-2.0")]

public class

yjingleefixture

test語法

[test]

[platform(exclude = "winxp")]

public void sometest()

平台指定值: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中不支援。

testfixture語法

[testfixture]

[category("longrunning")]

public class

yjingleefixture

test語法

[test]

[category("verylong")]

public void verylongtest()

這個屬性會忽略乙個測試方法或測試fixture,直到它被顯式的選擇執行。如果你指定了它(比如你把滑鼠放在這個方法上,然後選擇runtest)這個測試方法就會執行。我們常常用於暫時避免的測試方法。

testfixture語法

[testfixture,explicit]

public class

yjingleefixture

test語法

[test, explicit]

public void explicittest()

suite屬性用來定義基於使用者偏好的集合。在測試中不常用,因為框架提供了動態建立機制。

這個屬性表明這個測試方法或測試fixture會被忽略掉。一段時間內不會執行這個方法或測試fixture。我們可以將測試方法或fixture標記為ignore屬性,執行測試時,就不會執行。 例如我們常常使用這個屬性標記暫時不執行測試或者重構軟體時需要保留的測試來代替使用注釋或重新命名的方法,這樣做,測試**會和有這個標記的**一起編譯,在執行時不會執行標記的測試**,這樣保證不會忘記過去測試。

testfixture語法

[testfixture]

[ignore("ignore a fixture")]

public class

yjingleefixture

test語法

[test]

[ignore("ignore a test")]

public void ignoredtest()

在testdriven.net中,如果使用這個屬性,測試顯示結果如下:

好了,有關nunit單元測試框架的屬性就介紹這麼多了,testdriven.net測試工具支援了這裡大多數屬性,我們完全可以使用這個工具完成我們的測試工作。下篇我繼續為大家介紹斷言的基本語法,接下來以乙個例項實戰一下測試技巧。

你學會測試了嗎 2 測試語法之屬性介紹

這個簡短的系列一一講解一下.net下測試的相關知識,希望對初學者有所幫助。testdriven.net支援多種單元測試框架,像nunit,mbunit,ms team system,這裡我選擇了最為經典的nunit單元測試框架來介紹testdriven.net所支援的一些重要的屬性。testdriv...

Xaml語法概述及屬性介紹

空間xmal每個元素都對應著乙個類,但是在xmal中,只提供類名是不夠的,需要知道該類實在.net的哪個命名空間下面.xaml解析器才能夠正確的解析.1 page 2x class 3xmlns 4xmlns x 5xmlns local 6xmlns d 7xmlns mc compatibili...

ABAP入門之 語法介紹

1 變數定義和輸出語句 定義變數 data count type i.data title 25 變數賦值 move 1 to count.move president to title.輸出變數到螢幕 write title.write count.對於多個變數同時定義的。abap提供以 鏈 的方...