亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JBuilder2005單元測試之JUnit框架

2019-11-18 13:06:55
字體:
來源:轉載
供稿:網友

  簡單的框架
  
  JUnit是由Erich Gamma和Kent Beck開發的開源測試框架,JBuilder集成了這個框架并對此做了擴展。JUnit之所以流行并為廣大的開發人員所推崇,一是因為它實戰性強,功能強大,二是因為它實在簡單。一個產品或框架要能有生命力,最好都具備這樣的特點。
  
  簡單地講這個框架提供了許多斷言(assert)方法,答應你設置測試的規則,如:assertEquals()、assertNull()、assertNotSame()、assertTrue()等方法,一個測試用例包括了多個斷言,當運行測試用例后,JUnit運行器會報告哪些斷言沒有通過,開發人員就可順藤摸瓜搞個水落石出了。而傳統的測試方法需要將期望的結果用諸如System.out.  
  JUnit的測試框架類結構很簡單,主要由3個類組成,其類圖關系如下圖所示:
   JBuilder2005單元測試之JUnit框架(圖一)
  圖 錯誤!文檔中沒有指定樣式的文字。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組件的測試運行器,如下圖所示:
  JBuilder2005單元測試之JUnit框架(圖二)
  圖 錯誤!文檔中沒有指定樣式的文字。AWT測試運行器
  
  ·Test class name:指定測試用例類和測試套件類。
  
  ·一個進度條:表示運行測試的執行進度,進度條下是正確、錯誤、失敗的測試統計數。
  
  ·Error and Failures:列出了測試錯誤和失敗的列表,點選其中的一個選項時,JUnit在窗口底部列出錯誤跟蹤跡。
  
  提示:
  
  JBuilder提供了方便的運行測試用例和測試套件類的方法,你只須點擊鼠標右鍵就可直接調用了。此外,JBuilder提供了一個JBTestRunner測試運行器,在功能和易用性上非JUnit提供的測試運行器所能媲美。JBuilder支持JUnit所提供的兩個測試運行器:junit.textui.TestRunner和junit.swingui.TestRunner。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产做受69高潮| 国产精品亚洲视频在线观看| 欧美成在线观看| 欧美一区二区三区免费观看| 欧美疯狂性受xxxxx另类| 成人在线视频福利| 欧美大片在线看免费观看| 国产精品草莓在线免费观看| 成人免费在线视频网站| 欧洲成人免费视频| 国产在线视频2019最新视频| 九九精品在线观看| 在线观看国产精品日韩av| 中日韩美女免费视频网站在线观看| 日韩精品高清在线| 茄子视频成人在线| 国产精品第1页| 国产精品久久久久久av下载红粉| 亚洲精品日韩av| 欧美日韩精品在线观看| 国产精品久在线观看| 久久伊人91精品综合网站| 久久综合色影院| 久久99国产综合精品女同| 亚洲老司机av| 亚洲高清久久久久久| 亚洲精品456在线播放狼人| 日韩av成人在线| 欧美巨猛xxxx猛交黑人97人| 亚洲美女av电影| 国产精品∨欧美精品v日韩精品| 日韩在线视频国产| 国产精品久久久av久久久| 日韩欧美综合在线视频| 亚洲自拍偷拍视频| 九色成人免费视频| 亚洲国产日韩一区| 日韩网站免费观看高清| 色悠悠久久88| 91久久精品视频| 久久精品国产亚洲| 欧美一级视频一区二区| 亚洲深夜福利在线| 精品久久香蕉国产线看观看亚洲| 中文字幕日韩av综合精品| 欧美激情精品久久久久久大尺度| 国产精品美腿一区在线看| 精品久久久久久国产91| 亚洲欧美国产va在线影院| 成人444kkkk在线观看| 国产成人精品视频| www欧美xxxx| 亚洲成人精品在线| 亚洲女性裸体视频| 在线日韩欧美视频| 国产在线播放91| 在线观看国产精品淫| 亚洲三级 欧美三级| 91久久久久久久久久久| 日韩精品视频三区| 欧美日韩国产va另类| 午夜精品久久久久久久99热| 欧美综合在线第二页| 91国产美女视频| 97在线日本国产| 日韩中文字幕免费| 日韩中文字幕久久| 最近2019中文免费高清视频观看www99| 久久久久久亚洲精品| 欧美精品www在线观看| 国产精品久久婷婷六月丁香| 亚洲欧美日韩精品久久奇米色影视| 国产精品入口尤物| 色香阁99久久精品久久久| 91精品免费久久久久久久久| 欧美成人久久久| 日本精品免费一区二区三区| 亚洲午夜久久久影院| 国产精品色悠悠| 欧美视频中文在线看| 精品视频在线播放色网色视频| 久久99久久亚洲国产| 日韩欧美在线视频日韩欧美在线视频| 欧美在线视频a| 亚洲日本成人女熟在线观看| 91精品国产色综合久久不卡98口| 日韩精品在线视频| 成人亲热视频网站| 国产精品主播视频| 亚洲国产精品嫩草影院久久| 欧美成aaa人片免费看| 992tv在线成人免费观看| 成人啪啪免费看| 国产成人av在线| 91伊人影院在线播放| 日韩电视剧免费观看网站| 亚洲精品国产综合区久久久久久久| 欧美综合第一页| 久久色在线播放| 在线亚洲欧美视频| 欧美成人合集magnet| 亚洲自拍偷拍色片视频| 国产99久久精品一区二区永久免费| 久久精品国产一区二区三区| 国产成人97精品免费看片| 亚洲第一区在线观看| 欧美成人精品在线观看| 国产精品偷伦一区二区| 久久久在线视频| 亚洲精品在线91| 国产精品网红直播| 亚洲成av人片在线观看香蕉| 亚洲人成在线观看网站高清| 国产美女91呻吟求| 国产成人精品久久二区二区| 国产精品入口尤物| 97av在线播放| 91亚洲精品视频| 亚洲少妇激情视频| 欧美成人黑人xx视频免费观看| 国产91ⅴ在线精品免费观看| 午夜精品久久久久久久99黑人| 日韩av不卡在线| 成人综合网网址| 国产精品人成电影| 高清欧美性猛交xxxx| 97精品久久久| 成人春色激情网| 欧美精品久久一区二区| 精品国产1区2区| 欧美日韩在线观看视频小说| 久久久久中文字幕2018| 亚洲夜晚福利在线观看| 国产精品草莓在线免费观看| 久久综合久中文字幕青草| 欧美性精品220| 亚洲国产精品视频在线观看| 精品动漫一区二区三区| 91午夜在线播放| 永久免费看mv网站入口亚洲| 中文字幕免费精品一区高清| 国产视频丨精品|在线观看| 久久视频在线观看免费| 亚洲欧美日韩国产中文专区| 亚洲免费视频网站| 91国自产精品中文字幕亚洲| 日韩在线中文视频| 亚洲**2019国产| 欧美日韩午夜激情| 亚洲激情免费观看| 亚洲精品wwww| 欧美日韩国产黄| 国产精品成人va在线观看| 欧美午夜视频一区二区| 国产精品久久久久久久久久久久久久| 亚洲精品一二区| 精品久久久久国产| 久久久视频免费观看| 欧美日韩国产麻豆| 高清欧美性猛交xxxx| 亚洲国产高潮在线观看| 欧美亚洲在线视频| 中文字幕亚洲综合久久筱田步美| 国产精品色婷婷视频|