亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > Nunit
NUnit之Attribue詳解
作者:網(wǎng)絡轉(zhuǎn)載 發(fā)布時間:[ 2013/4/9 17:19:48 ] 推薦標簽:

  在上一篇文章“NUnit之Assertion詳解”中,給大家介紹了NUnit的斷言,現(xiàn)在接著給大家介紹Attribute在NUnit中的具體作用。

  Attribute是C#一個重要的語言特征,園子里應該有不少這方面的文章,如果對Attribute不太了解,建議先去稍稍了解一下,親手做個小程序感受一下Attribute的作用。

  我們在使用NUnit編寫測試用例時,離不開兩個基本的Attribute,例如,我們要測試一個類的Add方法,使用的代碼如下:

  [TestFixture]public class MyTest{ [Test] public void TestAdd() { int a = 99; int b = 1; int value = MyMath.Add(a,b); Assert.AreEqual(value, 100); } Public void TestDel() { int value = MyMath.del(99,1); Assert.AreEqual(value, 98); }}

  上面的代碼中,已經(jīng)使用了兩個Attribute,即[TestFixture]和[Test],其中[TestFixture]的作用是聲明MyTest類是一個含有測試方法的類,而[Test]則說明TestAdd是一個測試方法,而TestDel由于沒有用[Test]聲明,所以它不是測試方法,雖然它以Test開頭。

  對于編譯后的Assembly文件,NUnit是通過查找[TestFixture]和[Test]這類它支持的與測試相關的Attribute來確定哪些類包含了測試方法,以及這些類中的哪些方法是測試方法。

  對于上面的例子,如果用NUnit的圖形化界面打開其編譯后的Assembly,應該看到如下的界面,TedtAdd方法以及它所屬的命名空間按照樹的形式展開,而TestDel方法由于沒有[Test]的聲明,所以它只是一個普通的方法,也沒有在樹中展現(xiàn):

  點擊Run按鈕后,NUnit會運行所有的測試方法,運行后的界面如下

  通過上面的小例子,我們知道了[TestFixture]和[Test]這兩個Attribute的作用,對它支持的Attribute有了初步了解。

  如果查看NUnit的源代碼(大家可以去官網(wǎng)注冊然后下載),可以知道,在NUnit.Framework這個命名空間中,有TestFixtureAttribute和TestAttribute兩個類,它們負責解析帶有[TestFixture]和[Test]聲明的類和方法(在C#語法規(guī)范中,要實現(xiàn)一個名稱為[ABC]的Attribute,必須建立名稱為ABCAttribute的類,并繼承于Attribute這個基類)。

  NUnit支持的Attribute遠不止上面兩個,我大致把它們分為四大類,分別是控制類、數(shù)值類、平臺類和其它類,下面逐一介紹

  一:控制類

  這些Attribute控制測試類或者測試方法,而且成對出現(xiàn),功能基本相比,了解一個自然了解另外一個。

  [TestFixture]/[Explicit]:聲明一個類是測試類/聲明一個類只有在UI界面被選中時才執(zhí)行

  [TestFixtureSetup]/[TestFixtureTearDown]:在測試開始前/結(jié)束后要執(zhí)行的操作,一個TestFixture只能有一個TestFixtureSetup或TestFixtureTearDown。

  [Test]/[Ignore]:是測試方法/忽略掉,測試時不執(zhí)行

  [Setup]/[TearDown]:每個測試方法在執(zhí)行前/結(jié)束后要執(zhí)行的操作

  二:數(shù)值類

  數(shù)值類Attribue是NUnit的一大亮點,善于使用這些Attribue,將使測試方法變得清晰、簡潔、可讀性強、可擴展性強,有利于進行數(shù)據(jù)驅(qū)動下的測試。

  為了說明下面的例子,使用下面的方法,也是打印輸出輸入值及其數(shù)據(jù)類型,這樣便于把執(zhí)行的結(jié)果通過打印的方式在NUnit中輸出

  Console.WriteLine(t + ", its type:" + typeof(T));

  [Values]:以參數(shù)的形式傳入一組值,NUnit會把這組值分解成相應數(shù)量的子測試。

  例如下面的代碼,分別在[Values]中傳入三組共8個值,在執(zhí)行時便一共會分解成8個子測試方法,例如

  TestPrintInt([Values(1, 2, 3)] int x)會被分解為TestPrintInt(1)TestPrintInt(2)TestPrintInt(3)三組

  如下圖,當選中ValueDemo這個節(jié)點,然后點擊Run按鈕后,會看到一共測試了8個測試用例。

  當了解了這個Attribue的設計思路后,以后的其它Attribute也很容易理解了,往往通過它們的命名可以猜出一二。

上一頁12下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 18成人免费观看视频 | 久久尹人香蕉国产免费天天 | 最近免费中文字幕大全免费 | 美女黄网站在线观看 | free性欧美69| 欧美日韩一区二区视频免费看 | 77788色淫网站女女免费视频 | 成人91在线 | 欧美福利网站 | 曰批全过程免费视频播放网站 | 欧美xxxxx69xxxx| 久草香蕉视频 | 欧美日韩一二 | 国产精品欧美一区喷水 | 午夜久久精品 | 国产无限免费观看黄网站 | 成年男女免费视频 | 国产亚洲欧洲日韩综合v | 日韩大片观看网址 | 国产a视频精品免费观看 | 日韩精品视频免费在线观看 | 久久久久久一级毛片免费野外 | 窝窝午夜影院 | 2019年中文字字幕视频 | 日韩欧美国产卡通动漫 | 国产日韩一区二区三区在线观看 | 操你啦在线视频 | 国产日韩视频在线 | 色大18成网站www在线观看 | 污污网站观看 | 国产亚洲综合成人91精品 | 亚洲国产精品成人久久 | 视频二区国产 | 久久久无码精品亚洲日韩按摩 | 日韩精品成人 | 亚洲人成网站色7799在线观看 | 午夜五月天| 干亚洲美女 | 成人亚洲欧美日韩中文字幕 | 欧美大交乱xxxxxbbb | 最近2019好看的中文字幕 |