濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > JBuilder2005單元測(cè)試之JUnit框架

JBuilder2005單元測(cè)試之JUnit框架

熱門(mén)標(biāo)簽:騰訊地圖標(biāo)注商戶改名注冊(cè)入駐 淮南騰訊地圖標(biāo)注 地圖標(biāo)注人員兼職 怎樣把地圖標(biāo)注出來(lái) 電話機(jī)器人的特色和創(chuàng)新 黃石智能營(yíng)銷電銷機(jī)器人效果 商丘百應(yīng)電話機(jī)器人有沒(méi)有效果 漯河辦理400電話 開(kāi)封便宜外呼系統(tǒng)報(bào)價(jià)
 簡(jiǎn)單的框架

  JUnit是由Erich Gamma和Kent Beck開(kāi)發(fā)的開(kāi)源測(cè)試框架,JBuilder集成了這個(gè)框架并對(duì)此做了擴(kuò)展。JUnit之所以流行并為廣大的開(kāi)發(fā)人員所推崇,一是因?yàn)樗鼘?shí)戰(zhàn)性強(qiáng),功能強(qiáng)大,二是因?yàn)樗鼘?shí)在簡(jiǎn)單。一個(gè)產(chǎn)品或框架要能有生命力,最好都具備這樣的特點(diǎn)。

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

  JUnit的測(cè)試框架類結(jié)構(gòu)很簡(jiǎn)單,主要由3個(gè)類組成,其類圖關(guān)系如下圖所示:


  圖 錯(cuò)誤!文檔中沒(méi)有指定樣式的文字。JUnit測(cè)試框架類結(jié)構(gòu)

  ·junit.framework.Test:測(cè)試接口。

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

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

  一個(gè)測(cè)試用例可以包含若干個(gè)testXxx()測(cè)試方法,測(cè)試用例測(cè)試一個(gè)或多個(gè)類API接口的正確性,當(dāng)然在調(diào)用類API時(shí),需要事先創(chuàng)建這個(gè)類的對(duì)象及一些關(guān)聯(lián)的對(duì)象,這組對(duì)象就稱為測(cè)試固件(Fixture),相當(dāng)于測(cè)試用例的"工作對(duì)象"。

  我們?cè)谇懊嬲f(shuō)過(guò),一個(gè)測(cè)試用例類可以包含多個(gè)testXxx()方法,在運(yùn)行時(shí),每個(gè)測(cè)試方法都對(duì)應(yīng)一個(gè)測(cè)試用例類的實(shí)例。當(dāng)然,你可以在具體的testXxx()方法里聲明并實(shí)例化業(yè)務(wù)類的實(shí)例,在測(cè)試完成后再銷毀它們。但是,這么一來(lái)你就要在每個(gè)testXxx()方法中都重復(fù)這些代碼,因?yàn)門(mén)estCase實(shí)例被運(yùn)行時(shí),依照以下步驟運(yùn)行:

  1.創(chuàng)建測(cè)試用例的實(shí)例。

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

  3.運(yùn)行testXxx()測(cè)試方法。

  4.調(diào)用tearDown()方法,執(zhí)行銷毀對(duì)象的工作。

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

  1.創(chuàng)建TestCase類的子類。

  2.在子類中聲明若干個(gè)測(cè)試所用的對(duì)象。

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

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

  如下面即是一個(gè)簡(jiǎn)單的測(cè)試固件:

  代碼清單 錯(cuò)誤!文檔中沒(méi)有指定樣式的文字。測(cè)試固件

  1. public class MoneyTest extends TestCase
  2. {
  3.  private Money f12CHF;//12瑞士法郎
  4.  private Money f14CHF; //14瑞士法郎
  5.  private Money f28USD; //28美國(guó)美元
  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個(gè)Money類對(duì)象(測(cè)試固件),在setUp()方法中實(shí)例化這3個(gè)對(duì)象(第7~9行),由于這些對(duì)象可以被垃圾進(jìn)行直接回收,所以在tearDown()中不做任何操作。

   測(cè)試用例(TestCase)

  有了測(cè)試固件,就可以開(kāi)始編寫(xiě)測(cè)試用例的測(cè)試方法了。當(dāng)然你也可不需要測(cè)試固件而直接編寫(xiě)測(cè)試用例方法。下面我們?cè)跍y(cè)試固件的基礎(chǔ)上添加測(cè)試用例方法testMoneyBag(),代碼如下所示:

  代碼清單 錯(cuò)誤!文檔中沒(méi)有指定樣式的文字。測(cè)試用例方法

  1. public class MoneyTest extends TestCase
  2. {
  3.  private Money f12CHF;//12瑞士法郎
  4.  private Money f14CHF; //14瑞士法郎
  5.  private Money f28USD; //28美國(guó)美元
  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. }

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

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

  測(cè)試套件(TestSuite)

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

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

  代碼清單 錯(cuò)誤!文檔中沒(méi)有指定樣式的文字。測(cè)試套件

  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行中聲明并實(shí)例化了一個(gè)TestSuite,在第10、11行分別加入一個(gè)測(cè)試用例。你可以通過(guò)suite.addTest(Test t)方法添加一個(gè)套件。這樣運(yùn)行這個(gè)套件就可以自動(dòng)運(yùn)行所有測(cè)試用例的測(cè)試方法了。

  測(cè)試運(yùn)行器

  JUnit提供了3個(gè)標(biāo)準(zhǔn)的測(cè)試運(yùn)行器運(yùn)行這些測(cè)試用例或測(cè)試套件,這3個(gè)測(cè)試運(yùn)行器分別是:

  ·junit.textui.TestRunner:文本測(cè)試運(yùn)行器。
  ·junit.awtui.TestRunner:使用AWT組件界面的測(cè)試運(yùn)行器。
  ·junit.swingui.TestRunner:使用Swing組件界面的測(cè)試運(yùn)行器。

  下面是基于AWT組件的測(cè)試運(yùn)行器,如下圖所示:

  圖 錯(cuò)誤!文檔中沒(méi)有指定樣式的文字。AWT測(cè)試運(yùn)行器

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

  ·一個(gè)進(jìn)度條:表示運(yùn)行測(cè)試的執(zhí)行進(jìn)度,進(jìn)度條下是正確、錯(cuò)誤、失敗的測(cè)試統(tǒng)計(jì)數(shù)。

  ·Error and Failures:列出了測(cè)試錯(cuò)誤和失敗的列表,點(diǎn)選其中的一個(gè)選項(xiàng)時(shí),JUnit在窗口底部列出錯(cuò)誤跟蹤跡。

  提示:

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

您可能感興趣的文章:
  • junit4教程junit4.5官方下載
  • JUnit5相關(guān)內(nèi)容簡(jiǎn)介
  • 詳解Spring Boot Junit單元測(cè)試
  • java編程之單元測(cè)試(Junit)實(shí)例分析(附實(shí)例源碼)
  • 淺談junit4單元測(cè)試高級(jí)用法
  • JUnit單元測(cè)試入門(mén)必看篇
  • 詳解Java單元測(cè)試之JUnit篇
  • JUnit 5中擴(kuò)展模型的深入理解

標(biāo)簽:亳州 鄭州 大興安嶺 武威 岳陽(yáng) 馬鞍山 紅河 拉薩

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《JBuilder2005單元測(cè)試之JUnit框架》,本文關(guān)鍵詞  JBuilder2005,單元,測(cè),試之,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JBuilder2005單元測(cè)試之JUnit框架》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于JBuilder2005單元測(cè)試之JUnit框架的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    固阳县| 凌海市| 营山县| 巴里| 阿鲁科尔沁旗| 灵宝市| 安阳市| 英德市| 常德市| 弋阳县| 翁源县| 南城县| 南涧| 民权县| 青州市| 盐池县| 苗栗市| 崇明县| 海宁市| 鹤山市| 望谟县| 麻阳| 吴忠市| 永寿县| 忻城县| 八宿县| 库车县| 都江堰市| 丽江市| 澎湖县| 昭觉县| 城固县| 虞城县| 北辰区| 寿宁县| 建水县| 中宁县| 抚远县| 图片| 贡山| 阿荣旗|