• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    nunit使用資料

    發布: 2007-5-05 18:59 | 作者: seanhe | 來源: 51testing論壇 | 查看: 84次 | 進入軟件測試論壇討論

    領測軟件測試網

    本文講述了如何用NUnit書寫和組織javascript:;" onClick="javascript:tagshow(event, '%B2%E2%CA%D4');" target="_self">測試代碼的步驟。

    簡單的Test Case
    書寫測試代碼的步驟:

    1.  創建TestCase的一個實例;

    2.  Override方法RunTest();

    3.  如要檢查某值,則調用Assert。

    例如,測試“兩個Money對象之和與包含它們之和的對象相等”的測試代碼如下:

    public void TestSimpleAdd() {

        Money m12CHF= new Money(12, "CHF");

        Money m14CHF= new Money(14, "CHF");

        Money expected= new Money(26, "CHF");

        Money result= m12CHF.Add(m14CHF);

        Assert(expected.Equals(result));

    }

    如果要寫的測試與以前寫的測試非常像,那么就寫一個Fixture來代替。如果想在一個測試中運行更多的東西,就創建一個Suite。

    Fixture
    如果有兩個或兩個以上的測試作用于相同或類似的對象集,我們該怎么辦呢?測試作用于一個已知的對象集,這個對象集被稱為fixture。一般建立這個fixture的時間比實際測試的時間多得多。

           當有個公共的fixture時,我們可以這么做:

    1.  創建TestCase的子類。

    2.  為fixture的每部分加入一個實例變量。

    3.  Override SetUp()初始化這些變量。

    4.  Override TearDown()釋放任何在SetUp中分配的永久資源。

    例如,編寫用來與12 Swiss Francs,14 Swiss Francs和28 US Dollars不同組合一起工作的TestCase時,首先創建一個fixture:

    public class MoneyTest: TestCase {

        private Money f12CHF;

        private Money f14CHF;

        private Money f28USD;

       

        protected override void SetUp() {

            f12CHF= new Money(12, "CHF");

            f14CHF= new Money(14, "CHF");

            f28USD= new Money(28, "USD");

        }

    }

    一旦準備好Fixture,就可書寫任意多的測試用例。

    Test Case
    當有一個Fixture如何書寫和調用一個獨立的Test Case呢?書寫一個沒有的fixture測試用例是非常簡單的——只需在TestCase 的一個子類中override RunTest。為一個Fixture書寫測試用例是同樣的方法,通過為set up代碼制造一個TestCase的子類,然后為每個獨立的測試用例制造不同的子類。然而,不久你就會注意到這些代碼中的大部分成為了語法的犧牲品。

    NUnit為書寫一個基于Fixture的測試提供了簡明的方法:

    1.  在fixture類中書寫一個public的測試方法。在此,必須確保這個方法是public的,否則它將不能通過reflection被調用。

    2.  創建這個TestCase的一個實例,并把這個測試方法的名字傳給它的constructor。

    例如,測試一個Money對象與另一個MoneyBag的和:

    public void TestMoneyMoneyBag() {

        // [12 CHF] + [14 CHF] + [28 USD] == {[26 CHF][28 USD]}

        Money bag[]= { new Money(26, "CHF"), new Money(28, "USD") };

        MoneyBag expected= new MoneyBag(bag);

        AssertEquals(expected, f12CHF.Add(f28USD.Add(f14CHF)));

    }

    創建MoneyTest的實例:

    new MoneyTest("TestMoneyMoneyBag")

    當這個測試運行起來時,測試會查找測試方法的名字并調用它。一旦有多個測試,就可以把他們組織成一個Suite。

    Suite
    如何一次進行多個測試?NUnit提供了TestSuite,它可以一次運行任意數目的測試。例如,運行一個單獨的測試用例:

    TestResult result= (new MoneyTest("TestMoneyMoneyBag")).Run();

    創建一個有兩個測試用例的suite并且一次運行它們:

    TestSuite suite= new TestSuite();

    suite.AddTest(new MoneyTest("TestMoneyEquals"));

    suite.AddTest(new MoneyTest("TestSimpleAdd"));

    TestResult result= suite.Run();

    另一種方法是讓NUnit從一個TestCase吸取出一個suite,只需把你的TestCase傳給TestSuite的constructor即可:

    TestSuite suite= new TestSuite(typeof(MoneyTest));

    TestResult result= suite.Run();

    當創建只包含一個測試用例子類的suite時,使用手工方法。否則就采用自動方法,它避免了在每增加新的測試用例時都要改變suite的創建代碼。

    TestSuites并不是只能包含TestCase類。它可以包含實現了ITest的任意對象。例如,你可以在你的代碼中創建一個TestSuite,同樣我也可以在我的代碼中這樣做。那么我們就可以創建一個包含它們的TestSuite來一次運行它們:

    TestSuite suite= new TestSuite();

    suite.AddTest(Kent.Suite());

    suite.AddTest(Erich.Suite());

    TestResult result= suite.Run();

    TestRunner
    如何運行這些測試并收集結果呢?NUnit提供了定義suite運行和顯示結果的工具。為了使你的suite對于TestRunner時可存取的,必須定義一個返回測試suite 的static property Suite。

    例如,在MoneyTest中加入以下代碼使MoneyTest suite對于TestRunner可用:

    public static ITest Suite {

      get {

        TestSuite suite= new TestSuite();

        suite.addTest(new MoneyTest("TestMoneyEquals"));

        suite.addTest(new MoneyTest("TestSimpleAdd"));

        return suite;

      }

    }

    如果一個TestCase類不定義一個suite方法,TestRunner將自動產生用所有方法來填充的suite,并在這些方法名字前加上前綴“Test”。NUnit提供兩種TestRunner:GUI和字符版本。

    GUI窗口包含:填寫包含測試類的DLL 或EXE名字的文本框;填寫在DLL 或EXE中擁有Suite屬性的類名。如下圖:


    在reload已編譯類的動態編程環境中,你可以不需要NUnit窗口。在其他環境中,你必須為每次運行不斷重啟GUI版本。這是非常乏味和費時的工作,這在將來的版本中會得到改進。

    同樣,有一個NUnit的批處理接口。為了使用命令行的NUnit,可以在系統提示符下鍵入NUnitConsole后跟包含Suite屬性的類所在的裝配體。例如,使用批處理TestRunner測試MoneyTest:

    C:\NUnitConsole NUnit.Samples.Money.MoneyTest,NUnitSamples.dll

    批處理接口將結果以文本的方式輸出。另一個可選方法是在你的TestCase類的main方法中調用批處理接口。如下:

    public static void Main(String[] args) {

        NUnit.TextUI.TestRunner.Run(Suite);

    }

    這樣,只需在系統提示符下鍵入MoneyTest 就可運行測試。



    TAG: nunit

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    軟件測試技術文章排行榜
    軟件測試技術分類最新內容
    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>