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

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

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

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

    在軟件測試中了解JUnit和單元測試入門簡介

    發布: 2010-7-30 10:14 | 作者: 網絡轉載 | 來源: 領測軟件測試網采編 | 查看: 138次 | 進入軟件測試論壇討論

    領測軟件測試網
      軟件測試中了解JUnit和單元測試入門簡介
      1、幾個相關的概念
      白盒測試——把測試對象看作一個打開的盒子,程序內部的邏輯結構和其他信息對測試人員是公開的。
      回歸測試——軟件或環境的修復或更正后的再測試,自動測試工具對這類測試尤其有用。
      單元測試——是最小粒度的測試,以測試某個功能或代碼塊。一般由程序員來做,因為它需要知道內部程序設計和編碼的細節。
      JUnit ——是一個開發源代碼的Java測試框架,用于編寫和運行可重復的測試。他是用于單元測試框架體系xUnit的一個實例(用于java語言)。主要用于白盒測試,回歸測試。

      2
      、單元測試概述
      2.1、單元測試的好處
      A、提高開發速度——測試是以自動化方式執行的,提升了測試代碼的執行效率。
      B、提高軟件代碼質量——它使用小版本發布至集成,便于實現人員除錯。同時引入重構概念,讓代碼更干凈和富有彈性。
      C、提升系統的可信賴度——它是回歸測試的一種。支持修復或更正后的再測試,可確保代碼的正確性。
      22、單元測試的針對對象
      A、面向過程的軟件開發針對過程。
      B、面向對象的軟件開發針對對象。
      C、可以做類測試,功能測試,接口測試(最常用于測試類中的方法)。
      2.3、單元測試工具和框架
      目前的最流行的單元測試工具是xUnit系列框架,常用的根據語言不同分為JUnitjava),CppUnitC++),DUnit Delphi ),NUnit.net),PhpUnitPhp )等等。該測試框架的第一個和最杰出的應用就是由Erich Gamma (《設計模式》的作者)和Kent BeckXPExtreme Programming)的創始人)提供的開放源代碼的JUnit。

      3.Junit
      入門簡介
      3.1、JUnit的好處和JUnit單元測試編寫原則
      好處:
      A、可以使測試代碼與產品代碼分開。
      B、針對某一個類的測試代碼通過較少的改動便可以應用于另一個類的測試。
      C、易于集成到測試人員的構建過程中,JUnitAnt的結合可以實施增量開發。
      D、JUnit是公開源代碼的,可以進行二次開發。
      C、可以方便地對JUnit進行擴展。
      編寫原則:
      A、是簡化測試的編寫,這種簡化包括測試框架的學習和實際測試單元的編寫。
      B、是使測試單元保持持久性。
      C、是可以利用既有的測試來編寫相關的測試。
      3.2、JUnit的特征
      A、使用斷言方法判斷期望值和實際值差異,返回
      Boolean值。
      B、測試驅動設備使用共同的初始化變量或者實例。
      C、測試包結構便于組織和集成運行。
      D、支持圖型交互模式和文本交互模式。
      3.3、JUnit框架組成
      A、對測試目標進行測試的方法與過程集合,可稱為測試用例(TestCase)。
      B、測試用例的集合,可容納多個測試用例(TestCase),將其稱作測試包(TestSuite)。
      C、測試結果的描述與記錄。(TestResult) 。
      D、測試過程中的事件監聽者(TestListener)。
      E、每一個測試方法所發生的與預期不一致狀況的描述,稱其測試失敗元素(TestFailure)
      F、JUnit Framework中的出錯異常(AssertionFailedError)。
           JUnit框架是一個典型的Composite模式:TestSuite可以容納任何派生自Test的對象;當調用TestSuite對象的run()方法是,會遍歷自己容納的對象,逐個調用它們的run()方法。(可參考《程序員》2003-6期)。
      3.4、JUnit的安裝和配置
      JUnit安裝步驟分解:
      http://download.sourceforge.net/junit/中下載JUnit包并將Junit壓縮包解壓到一個物理目錄中(例如C:\Junit3.8.1)。
      記錄
      Junit.jar文件所在目錄名(例如C:\
      Junit3.8.1\Junit.jar)。
      進入操作系統Windows2000操作系統為準),按照次序點擊開始 設置 控制面板”。
      在控制面板選項中選擇
      系統,點擊環境變量,在系統變量變量列表框中選擇
      “CLASS-PATH”關鍵字(不區分大小寫),如果該關鍵字不存在則添加。
      雙擊
      “CLASS-PATH”關鍵字添加字符串“C:Junit3.8.1\Junti.jar”(注意,如果已有別的字符串請在該字符串的字符結尾加上分號;”),這樣確定修改后
      Junit就可以在集成環境中應用了。
      對于
      IDE環境,對于需要用到的JUnit的項目增加到lib中,其設置不同的IDE
      有不同的設置。
      3.5、
      JUnit中常用的接口和類
      (以
      Test接口——運行測試和收集測試結果
      Test接口使用了Composite設計模式,是單獨測試用例TestCase),聚合測試模式(TestSuite)及測試擴展(TestDecorator)的共同接口。
      它的
      public int countTestCases()方法,它來統計這次測試有多少個TestCase,另外一個方法就是public void run TestResult ),TestResult是實例接受測試結果,
      run方法執行本次測試。
      TestCase抽象類
      ——定義測試中固定方法
      TestCaseTest接口的抽象實現,(不能被實例化,只能被繼承)其構造函數TestCase(string name)根據輸入的測試名稱name創建一個測試實例。由于每一個TestCase在創建時都要有一個名稱,若某測試失敗了,便可識別出是哪個測試失敗。
      TestCase類中包含的
      setUp()、tearDown()方法。setUp()方法集中初始化測試所需的所有變量和實例,并且在依次調用測試類中的每個測試方法之前再次執行setUp()方法。
      tearDown()方法則是在每個測試方法之后,釋放測試程序方法中引用的變量和實例。
      開發人員編寫測試用例時,只需繼承
      TestCase,來完成run方法即可,然后JUnit獲得測試用例,執行它的run方法,把測試結果記錄在
      TestResult之中。
      Assert靜態類
      ——一系列斷言方法的集合
      Assert包含了一組靜態的測試方法,用于期望值和實際值比對是否正確,即測試失敗,Assert類就會拋出一個AssertionFailedError異常,JUnit測試框架將這種錯誤歸入Failes并加以記錄,同時標志為未通過測試。如果該類方法中指定一個String類型的傳參則該參數將被做為AssertionFailedError異常的標識信息,告訴測試人員改異常的詳細信息。
      JUnit 提供了
      6大類
      31組斷言方法,包括基礎斷言、數字斷言、字符斷言、布爾斷言、對象斷言。
      其中
      assertEqualsObject expcted,Object actual)內部邏輯判斷使用equals()方法,這表明斷言兩個實例的內部哈希值是否相等時,最好使用該方法對相應類實例的值進行比較。而assertSameObject expected,Object actual)內部邏輯判斷使用了Java運算符“==”,這表明該斷言判斷兩個實例是否來自于同一個引用(Reference),最好使用該方法對不同類的實例的值進行比對。asserEquals(String message,String expected,String actual)該方法對兩個字符串進行邏輯比對,如果不匹配則顯示著兩個字符串有差異的地方。
      ComparisonFailure類提供兩個字符串的比對,不匹配則給出詳細的差異字符。
      TestSuite測試包類
      ——多個測試的組合
      TestSuite類負責組裝多個Test Cases。待測得類中可能包括了對被測類的多個測試,而TestSuit負責收集這些測試,使我們可以在一個測試中,完成全部的對被測類的多個測試。
      TestSuite類實現了
      Test接口,且可以包含其它TestSuites。它可以處理加入Test時的所有拋出的異常。
      TestSuite處理測試用例有
      6個規約(否則會被拒絕執行測試)
              A 測試用例必須是公有類(
      Public
              B 測試用例必須繼承與TestCase
              C 測試用例的測試方法必須是公有的( Public
              D 測試用例的測試方法必須被聲明為Void
              E 測試用例中測試方法的前置名詞必須是test
              F 測試用例中測試方法誤任何傳遞參數
      TestResult結果類和其它類與接口
      TestResult結果類集合了任意測試累加結果,通過TestResult實例傳遞個每個測試的Run()方法。TestResult在執行TestCase是如果失敗會異常拋出
      TestListener接口是個事件監聽規約,可供
      TestRunner類使用。它通知listener的對象相關事件,方法包括測試開始startTest(Test test),測試結束endTest(Test test),錯誤,增加異常
      addError(Test test,Throwable t)和增加失敗addFailure(Test test,AssertionFailedError t)
      TestFailure
      失敗類是個失敗狀況的收集類,解釋每次測試執行過程中出現的異常情況。其toString()方法返回失敗狀況的簡要描述
      3.6、JUnit一個實例
      在控制臺中簡單的范例如下:
      1、寫個待測試的Triangle
      類,創建一個TestCase的子類ExampleTest:
      2
      、 ExampleTest中寫一個或多個測試方法,斷言期望的結果(注意:以
      test作為待測試的方法的開頭,這樣這些方法可以被自動找到并被測試)
      3
      、 ExampleTest中寫一個suite()方法,它會使用反射動態的創建一個包含所有的
      testXxxx方法的測試套件:
      Junit本身的操作并沒有什么特別的地方。這里提供了
      6種測試項目,分別針對不同的測試對象或者可以說是目標。
      test case
      :這個是最常用的,也就是對程序代碼中類的測試。
      test suite:這個更高一級,可以一次行測試多個類。其效果與分別進行多個
      testcase是相同的。
      jdbc fixture:這個是針對數據庫鏈接的測試。(很少用,不大懂。)我學的是默認的
      jdbc的數據庫。
      jndi fixture:這個相當于是一個容器測試。如果說主要的內容就是測試那些存放鏈接的
      fixture。
      在編程的時候,經常把一些常用的鏈接放在一個類似于容器的東東里面,這樣,如果調用重復調用鏈接的話,可以同一調用容器地址,再具體指向里面的鏈接。這是否是一種管理呢。^_^
      comparision fixture:這個也是比較少用的東東。
      custom fixture:
      這個是自定義設置。只是生成一個框架。
       
      junitx.framework包主要功能
      該包以類方法的方式擴展
      junit.framework.Assert的功能。
      也就是這時候,可以不用繼承相應的類,可以直接使用斷言的相關的功能。事實上基于元數據的測試框架都基本采用這種方式實現斷言。
      junitx.framework.Assert
      junitx.framework.ArrayAssert
      junitx.framework.ComparableAssert
      junitx.framework.FileAssert
      junitx.framework.ListAssert
      junitx.framework.ObjectAssert
      junitx.framework.NamingAssert
      junitx.framework.OrderedTestSuite
      junitx.framework.StringAssert
      junitx.framework.ThrowableAssert
      2. 測試類的私有屬性
      2.1
      測試類的私有屬性的實現
      使用相關類(junitx.util.PrivateAccessor
      )的方法類訪問私有屬性和方法。
      參考:
      ExampleJUnit_Addons_Exampleexample1目錄下
      example1.TestAccount
      example1.Account
      2.2 實現訪問類的屬性和方法的原理
      利用
      Java的反射機制來實現的。
      l 使用java.lang.Class的相關方法,獲得相關指定對象的Field,然后調用
      field.setAccessible(true);繞過訪問權限的檢查,然后可以訪問Field的值,當然
      也可以設置Field的值。
      l 使用java.lang.Class的相關方法,獲得相關指定對象的Method;然后調用
      field.setAccessible(true);繞過訪問權限的檢查;最后執行該方法.
      3. junitx.extensions包主要功能
      這個包實際上在使用模板方法模式創建測試用例工具類。
      使用了模板方法模式,定義抽象類,把相關的測試方法給出具體實現,把被測試對象的創建放到基本方法中。
      JUnit-addons框架自己的例子有:
      junitx.extensions.ComparabilityTestCase
      junitx.extensions.EqualsHashCodeTestCase
          junitx.extensions.SerializabilityTestCase
      這幾個類都定義了幾個抽象方法,這些方法主要是用于創建對象的方法,需要在具體類里面實現這些方法。在TestSuite里面,增加測試用例是通過,使用類的無參數構造器來實現的,因此上面的這些類,為了實現測試對象的注入,采用了set注入的方式,而不是構造器注入方式。
      其實,根據IOC的原理,可以把上面幾個類的類結構修改下,可以考慮采用構造注入的方式,更好些,不用去定義一些具體類。不過,如果采用構造注入這種方式,需要定義自己的的TestRunner了。
       
       

    延伸閱讀

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

    TAG: junit Junit JUnit JUNIT 單元 簡介 入門 軟件測試


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(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>