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

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

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

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

    JBuilder2005單元測試之JUnit框架

    發布: 2007-7-01 18:47 | 作者: admin | 來源: | 查看: 16次 | 進入軟件測試論壇討論

    領測軟件測試網   簡單的框架

      JUnit是由Erich Gamma和Kent Beck開發開源測試框架,JBuilder集成了這個框架并對此做了擴展。JUnit之所以流行并為廣大的開發人員所推崇,一是因為它實戰性強,功能強大,二是因為它實在簡單。一個產品或框架要能有生命力,最好都具備這樣的特點。

      簡單地講這個框架提供了許多斷言(assert)方法,允許你設置測試的規則,如:assertEquals()、assertNull()、assertNotSame()、assertTrue()等方法,一個測試用例包括了多個斷言,當運行測試用例后,JUnit運行器會報告哪些斷言沒有通過,開發人員就可順藤摸瓜搞個水落石出了。而傳統的測試方法需要將期望的結果用諸如System.out.println()等語句將過程信息打印到控制臺或日志中,由開發人員觀察輸出信息以判斷是否正確,現在這種"觀察"的工作由JUnit的那些assertXxx()方法自動完成。

      JUnit的測試框架類結構很簡單,主要由3個類組成,其類圖關系如下圖所示:


      圖 錯誤!文檔中沒有指定樣式的文字。JUnit測試框架類結構

      ·junit.framework.Test:測試接口。

      ·junit.framework.TestCase:測試用例類,業務類的測試用例類只需要承繼這個TestCase,根據情況編寫若干個public void testXxx()方法,在方法中通過assertYyy()定制若干測試規則就可以了。

      ·junit.framework.TestSuite:測試套件類,它可以將多個測試用例類捆綁在一起運行,也可以捆綁另一個測試套件。
      測試固件(Fixture)

      一個測試用例可以包含若干個testXxx()測試方法,測試用例測試一個或多個類API接口的正確性,當然在調用類API時,需要事先創建這個類的對象及一些關聯的對象,這組對象就稱為測試固件(Fixture),相當于測試用例的"工作對象"。

      我們在前面說過,一個測試用例類可以包含多個testXxx()方法,在運行時,每個測試方法都對應一個測試用例類的實例。當然,你可以在具體的testXxx()方法里聲明并實例化業務類的實例,在測試完成后再銷毀它們。但是,這么一來你就要在每個testXxx()方法中都重復這些代碼,因為TestCase實例被運行時,依照以下步驟運行:

      1.創建測試用例的實例。

      2.調用setUp()方法,執行一些初始化工作。

      3.運行testXxx()測試方法。

      4.調用tearDown()方法,執行銷毀對象的工作。

      如果測試用例類中有多個testXxx()方法,且它們都需要使用到相同的一組對象,我們可以在setUp()中實例化這組對象,并在tearDown()中銷毀它們。要編寫測試固件,依照以下步驟進行:

      1.創建TestCase類的子類。

      2.在子類中聲明若干個測試所用的對象。

      3.覆蓋setUp()方法,在方法中實例化這些對象。

      4.覆蓋tearDown()方法,釋放這些對象的資源。

      如下面即是一個簡單的測試固件:

      代碼清單 錯誤!文檔中沒有指定樣式的文字。測試固件

      1. public class MoneyTest extends TestCase
      2. {
      3.  private Money f12CHF;//12瑞士法郎
      4.  private Money f14CHF; //14瑞士法郎
      5.  private Money f28USD; //28美國美元
      6.  protected void setUp() {
      7.   f12CHF= new Money(12, "CHF");
      8.   f14CHF= new Money(14, "CHF");
      9.   f28USD= new Money(28, "USD");
      10.  }
      11.  protected void tearDown(){}
      12. }


      第3~5行聲明了3個Money類對象(測試固件),在setUp()方法中實例化這3個對象(第7~9行),由于這些對象可以被垃圾進行直接回收,所以在tearDown()中不做任何操作。

       測試用例(TestCase)

      有了測試固件,就可以開始編寫測試用例的測試方法了。當然你也可不需要測試固件而直接編寫測試用例方法。下面我們在測試固件的基礎上添加測試用例方法testMoneyBag(),代碼如下所示:

      代碼清單 錯誤!文檔中沒有指定樣式的文字。測試用例方法

      1. public class MoneyTest extends TestCase
      2. {
      3.  private Money f12CHF;//12瑞士法郎
      4.  private Money f14CHF; //14瑞士法郎
      5.  private Money f28USD; //28美國美元
      6.  protected void setUp() {
      7.   f12CHF= new Money(12, "CHF");
      8.   f14CHF= new Money(14, "CHF");
      9.   f28USD= new Money(28, "USD");
      10. }
      11.  public void testMoneyBag()
      12.  { 
      13.   Money bag[]= { f26CHF, f28USD };
      14.   MoneyBag expected= new MoneyBag(bag);
      15.   assertEquals(expected, f12CHF.add(f28USD.add(f14CHF)));
      16.  }
      17.  protected void tearDown(){}
      18. }

      測試方法都必須以test為前綴,且必須是public void的,運行器以此為反射查找規則找到這些測試用例方法。在一個方法中可以包括多個assertYyy()方法,每個assertYyy()方法都是一個測試規則。像第15行的assertYyy()斷言方法即為測試Money的add()方法和MoneyBag類正確性的測試規則。

      你可以在MoneyTest中添加多個public void testXxx()方法,運行器為每個方法生成一個測試用例實例,分別運行。

      測試套件(TestSuite)

      如果每次只能運行一個測試用例,那么又陷入了我們前面所談到的傳統測試的窘境:手工去運行一個個測試用例,測試套件專門為解決這一問題而來。它通過TestSuite對象將多個測試用例組裝成到一個測試套件,則測試套件批量運行。需要特殊指出的是,可以把一個測試套件整個添加到另一個測試套件中,就象小筐裝進大筐里變成一個篋一樣。

      測試套件類也通過承繼TestCase類實現,只不過它提供了一個public static Test suite()靜態方法,在該方法中將多個測試用例捆綁組裝在一起。一個典型的測試套件代碼如下所示:

      代碼清單 錯誤!文檔中沒有指定樣式的文字。測試套件

      1. public class MoneyTestSuite extends TestCase
      2. {
      3.  public TestSuite1(String s)
      4.  {
      5.   super(s);
      6.  }
      7.  public static Test suite()
      8.  {
      9.   TestSuite suite = new TestSuite();
      10.  suite.addTestSuite(MoneyTest.class);
      11.   suite.addTestSuite(MoneyBag.class);
      12.   return suite;
      13.  }
      14. }

      在第9行中聲明并實例化了一個TestSuite,在第10、11行分別加入一個測試用例。你可以通過suite.addTest(Test t)方法添加一個套件。這樣運行這個套件就可以自動運行所有測試用例的測試方法了。

      測試運行器

      JUnit提供了3個標準的測試運行器運行這些測試用例或測試套件,這3個測試運行器分別是:

      ·junit.textui.TestRunner:文本測試運行器。
      ·junit.awtui.TestRunner:使用AWT組件界面的測試運行器。
      ·junit.swingui.TestRunner:使用Swing組件界面的測試運行器。

      下面是基于AWT組件的測試運行器,如下圖所示:

      圖 錯誤!文檔中沒有指定樣式的文字。AWT測試運行器

      ·Test class name:指定測試用例類和測試套件類。

      ·一個進度條:表示運行測試的執行進度,進度條下是正確、錯誤、失敗的測試統計數。

      ·Error and Failures:列出了測試錯誤和失敗的列表,點選其中的一個選項時,JUnit在窗口底部列出錯誤跟蹤跡。

      提示:

      JBuilder提供了方便的運行測試用例和測試套件類的方法,你只須點擊鼠標右鍵就可直接調用了。此外,JBuilder提供了一個JBTestRunner測試運行器,在功能和易用性上非JUnit提供的測試運行器所能媲美。JBuilder支持JUnit所提供的兩個測試運行器:junit.textui.TestRunner和junit.swingui.TestRunner。

    延伸閱讀

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


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系: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>