一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

NUnit學(xué)習(xí)筆記之進(jìn)階篇

 superlee 2007-04-24

一、概述
  NUnit是一款優(yōu)秀的開源回歸測試框架,我在《NUnit學(xué)習(xí)筆記》一文中已對其基本使用方 法進(jìn)行了簡單的介紹。但除了TestFixture、Test、SetUp、TearDown、TestFixtureSetUp和 TestFixtureTearDown這六個屬性,NUnit還提供了ExpectedException、Ignore、Suite、 Category、Explicit和Platform等屬性用于測試。本文的目的就是對這些屬性進(jìn)行介紹。
  在介紹開始之前,還需要說明一些 事情,即本文只提供了C#代碼示例,而沒有提供VB、J#或Delphi代碼示例,而且在示例的編寫過程中雖然也使用了Visual Studio.net 2005和Delphi 2006作為編輯器,但文中絕不會涉及項目創(chuàng)建的內(nèi)容。此外本文的示例都是在NUnit可視化環(huán)境下測試的,對于其運行效果,如無必要,本文將僅以文字形 式進(jìn)行說明。
二、ExpectedException
  ExpectedException屬性用于測試是否會拋出指定的異常,若拋出則NUnit的狀態(tài)條為綠色,反之為紅色。
  示例代碼:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using NUnit.Framework;

    namespace NUnitTest
    {
      [TestFixture]
      public class Test1
      {
        [Test]
        [ExpectedException(typeof(Exception))]
        public void TestExpectedException()
        {
          string s = "";
          if (s != "")
            throw new Exception();
        }
      }
    }
  測試效果:狀態(tài)條為紅色。
  具體說明:由于字符串s在初始化時已賦值為"",因此在判斷“s != ""”時條件自然不會成立,這樣就不會拋出異常,狀態(tài)條當(dāng)然也就不會為綠色了。如果想讓狀態(tài)條顯示為綠色,將判斷條件改為“s == ""”就可以了。
三、Ignore
  Ignore屬性可以供類和方法使用,使用后類或方法在NUnit測試中會被忽略,也就是說,對于暫時不想運行的測試類或測試方法,可以通過Ignore屬性將其忽略掉。
  示例代碼1:
    [TestFixture]
    [Ignore("class test ignore")]
    public class Test2
    {
      [Test]
      public void TestIgnore()
      {}
    }
  示例代碼2:
    [TestFixture]
    public class Test22
    {
      [Test]
      [Ignore("function test ignore")]
      public void TestIgnore()
      {}
    }
測試效果:兩個示例被執(zhí)行后狀態(tài)條都會顯示為黃色。但如果你在測試時選擇的是Test2節(jié)點,就會發(fā)現(xiàn)示例一執(zhí)行后,只有Test2節(jié)點前的圓點顯示為 黃色,狀態(tài)條沒有發(fā)生任何變化,而示例二則會將Test2和TestIgnore節(jié)點前的圓點都變成黃色,狀態(tài)條也顯示成黃色。這是由于前者忽略的是整個 類的測試,而后者忽略的只是測試方法。
四、Suite
  根據(jù)NUnit文檔的說明,Suite屬性是用來標(biāo)記返回類型為 NUnit.Core.TestSuite的類屬性成員的,該類屬性成員所返回的對象會包含一組測試類,也就是說Suite屬性其實是用來組織一組測試類 的。那么組織這些測試類到TestSuite對象中有何用呢?其實在早期的NUint當(dāng)中,提供有NUnit.TextUI.TestRunner類,該 類有個Run方法,參數(shù)就是TestSuite對象,通過該方法可以在代碼中調(diào)用NUnit環(huán)境,從而運行TestSuite對象中的測試類。不過現(xiàn)在 NUnit似乎已經(jīng)不再使用這種方式了,故此對于Suite屬性這里不再介紹。
五、Category
  Category屬性用于將測試類和測試方法分組,從而使測試類和測試方法可以分組進(jìn)行測試。
  示例代碼1:
    [TestFixture]
    [Category("Class1")]
    public class Test31
    {
      [Test]
      public void Test()
      {}
    }

    [TestFixture]
    [Category("Class1")]
    public class Test32
    {
      [Test]
      public void Test()
      {}
    }

    
[TestFixture]
    [Category("Class2")]
    public class Test33
    {
      [Test]
      public void Test()
      {}
    }

    
[TestFixture]
    [Category("Class2")]
    public class Test34
    {
      [Test]
      public void Test()
      {}
    }
  示例代碼2:
    [TestFixture]
    public class Test3
    {
      [Test]
      [Category("m1")]
      public void Test11()
      {}

      
[Test]
      [Category("m1")]
      public void Test12()
      {}

      
[Test]
      [Category("m2")]
      public void Test21()
      {}

      
[Test]
      [Category("m2")]
      public void Test22()
      {}
    }
  測試效果:示例一中編寫了四個類,被分為Class1和Class2兩個組;示例二中編寫了四個方法,被分成了m1和m2兩個組。對于這種分組的測試,要想看出效果,在打開NUnit后,需要先在Categories選項卡中作出選擇,如下圖所示:

 

可以看到,所有的組默認(rèn)都在上邊的Available Categories列表框中,選中的組則通過Add按鈕添加到下邊的Selected Categories列表框中,NUnit允許選中多個。測試完成后對于不想要的組,還可以通過Remove按鈕放回到上邊。選好后,點擊Run按鈕,再 選擇Tests選項卡,效果如下圖:

 

可以看到,只有與Class1編組對應(yīng)的Test31和Test32這兩個類被測試了。
六、Explicit
Explicit屬性與Ignore屬性有些類似,也是用于對暫時不想運行的測試類或測試方法做忽略的。但與Ignore屬性相比還有兩點差別:一個是 Explicit屬性不需要說明信息,一個是使用Explicit屬性做忽略的類或方法在NUnit中被選中后,將不再被忽略,而是進(jìn)行測試。
  示例代碼1:
    [TestFixture]
    public class Test4
    {
      [Test, Explicit]
      public void TestMethod()
      {}
    }
  示例代碼2:
    [TestFixture, Explicit]
    public class Test42
    {
      [Test]
      public void TestMethod()
      {}
    }
  測試效果:示例一所忽略的是方法,若不在NUnit中選中該方法,測試后該方法前的圓點為黃色,即在測試中被忽略,若選中了則在測試后顯示為綠色或紅色,這與測試的結(jié)果有關(guān);示例二所忽略的是類,效果與示例一類似。
七、Platform
  Platform屬性用來指定運行平臺,若測試類或測試方法運行的平臺與指定的一致則忽略,否則執(zhí)行。
  示例代碼1:
    [TestFixture]
    public class Test5
    {
      [Test]
      [Platform(Exclude="Win98,Linux")]
      public void PlatformTest1()
      {}

      
[Test]
      [Platform(Exclude="      public void PlatformTest2()
      {}
    }
  示例代碼2:
    [TestFixture]
    [Platform(Exclude="
    public class Test52
    {
      [Test]
      public void PlatformTest1()
      {}

      
[Test]
      public void PlatformTest2()
      {}
    }
  測試效果:示例一作用的是方法,測試后PlatformTest1前的圓點為綠色,PlatformTest2前的圓點為黃色,即在測試中被忽略,這是因為我的運行平臺是.net 2.0;示例二作用的是類,因此兩個方法都會被忽略。
  此外,NUnit還給出了平臺的參考,摘錄如下:

Win

Win32 Win32S Win32Windows Win32NT
WinCE Win95 Win98 WinMe NT3
NT4 NT5 Win2K WinXP Win2003Server
Unix Linux NET NET-1.0  
         



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=447527

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    白丝美女被插入视频在线观看| 国产色一区二区三区精品视频| 中文日韩精品视频在线| 日韩日韩日韩日韩在线| 国产精品一区二区成人在线| 欧美一级黄片免费视频| 国产精品欧美日韩中文字幕| 国产在线日韩精品欧美| 国产av一区二区三区四区五区| 亚洲中文在线男人的天堂| 欧美黑人在线一区二区| 91欧美视频在线观看免费| 日本熟妇五十一区二区三区| 国产级别精品一区二区视频| 欧美日韩成人在线一区| 色婷婷中文字幕在线视频| 国产精品日韩欧美第一页| 美女被后入福利在线观看| 免费播放一区二区三区四区| 99久只有精品免费视频播放| 久久黄片免费播放大全| 熟妇人妻av中文字幕老熟妇| 香蕉网尹人综合在线观看| 一个人的久久精彩视频| 国产超薄黑色肉色丝袜| 国产传媒欧美日韩成人精品| 91亚洲国产—区=区a| 中文字幕一区二区熟女| 欧美成人一区二区三区在线| 少妇在线一区二区三区| 最近中文字幕高清中文字幕无| 成人免费观看视频免费| 国产成人午夜av一区二区| 久热青青草视频在线观看| 一区二区三区日韩中文| 热情的邻居在线中文字幕| 麻豆精品视频一二三区| 久久国产亚洲精品成人| 欧美国产日韩变态另类在线看| 欧美午夜一级特黄大片| 色涩一区二区三区四区|