




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第第頁(yè)在軟件測(cè)試中了解JUnit和單元測(cè)試入門(mén)簡(jiǎn)介在軟件測(cè)試中了解JUnit和單元測(cè)試入門(mén)簡(jiǎn)介
發(fā)表于:2023-07-30來(lái)源::點(diǎn)擊數(shù):標(biāo)簽:junitJunitJUnitJUNIT軟件測(cè)試
在軟件測(cè)試中了解JUnit和單元測(cè)試入門(mén)簡(jiǎn)介1、幾個(gè)相關(guān)的概念白盒測(cè)試——把測(cè)試對(duì)象看作一個(gè)打開(kāi)的盒子,程序內(nèi)部的邏輯結(jié)構(gòu)和其他信息對(duì)測(cè)試人員是公開(kāi)的?;貧w測(cè)試——軟件或環(huán)境的修復(fù)或更正后的“再測(cè)試”,自動(dòng)測(cè)試工具對(duì)這類(lèi)測(cè)試
在軟件測(cè)試中了解JUnit和單元測(cè)試入門(mén)簡(jiǎn)介1、幾個(gè)相關(guān)的概念白盒測(cè)試——把測(cè)試對(duì)象看作一個(gè)打開(kāi)的盒子,程序內(nèi)部的邏輯結(jié)構(gòu)和其他信息對(duì)測(cè)試人員是公開(kāi)的。回歸測(cè)試——軟件或環(huán)境的修復(fù)或更正后的“再測(cè)試”,自動(dòng)測(cè)試工具對(duì)這類(lèi)測(cè)試尤其有用。單元測(cè)試——是最小粒度的測(cè)試,以測(cè)試某個(gè)功能或代碼塊。一般由程序員來(lái)做,因?yàn)樗枰纼?nèi)部程序設(shè)計(jì)和編碼的細(xì)節(jié)。JUnit——是一個(gè)開(kāi)發(fā)源代碼的Java測(cè)試框架,用于編寫(xiě)和運(yùn)行可重復(fù)的測(cè)試。他是用于單元測(cè)試框架體系xUnit的一個(gè)實(shí)例(用于java語(yǔ)言)。主要用于白盒測(cè)試,回歸測(cè)試。
2、單元測(cè)試概述2.1、單元測(cè)試的好處A、提高開(kāi)發(fā)速度——測(cè)試是以自動(dòng)化方式執(zhí)行的,提升了測(cè)試代碼的執(zhí)行效率。B、提高軟件代碼質(zhì)量——它使用小版本發(fā)布至集成,便于實(shí)現(xiàn)人員除錯(cuò)。同時(shí)引入重構(gòu)概念,讓代碼更干凈和富有彈性。C、提升系統(tǒng)的可信賴(lài)度——它是回歸測(cè)試的一種。支持修復(fù)或更正后的“再測(cè)試”,可確保代碼的正確性。2.2、單元測(cè)試的針對(duì)對(duì)象A、面向過(guò)程的軟件開(kāi)發(fā)針對(duì)過(guò)程。B、面向?qū)ο蟮能浖_(kāi)發(fā)針對(duì)對(duì)象。C、可以做類(lèi)測(cè)試,功能測(cè)試,接口測(cè)試(最常用于測(cè)試類(lèi)中的方法)。2.3、單元測(cè)試工具和框架目前的最流行的單元測(cè)試工具是xUnit系列框架,常用的根據(jù)語(yǔ)言不同分為JUnit(java),CppUnit(C++),DUnit(Delphi),NUnit(.net),PhpUnit(Php)等等。該測(cè)試框架的第一個(gè)和最杰出的應(yīng)用就是由ErichGamma(《設(shè)計(jì)模式》的)和KentBeck(XP(ExtremeProgramming)的創(chuàng)始人)提供的開(kāi)放源代碼的JUnit。
3.Junit入門(mén)簡(jiǎn)介3.1、JUnit的好處和JUnit單元測(cè)試編寫(xiě)原則好處:A、可以使測(cè)試代碼與產(chǎn)品代碼分開(kāi)。B、針對(duì)某一個(gè)類(lèi)的測(cè)試代碼通過(guò)較少的改動(dòng)便可以應(yīng)用于另一個(gè)類(lèi)的測(cè)試。C、易于集成到測(cè)試人員的構(gòu)建過(guò)程中,JUnit和Ant的結(jié)合可以實(shí)施增量開(kāi)發(fā)。D、JUnit是公開(kāi)源代碼的,可以進(jìn)行二次開(kāi)發(fā)。C、可以方便地對(duì)JUnit進(jìn)行擴(kuò)展。編寫(xiě)原則:A、是簡(jiǎn)化測(cè)試的編寫(xiě),這種簡(jiǎn)化包括測(cè)試框架的學(xué)習(xí)和實(shí)際測(cè)試單元的編寫(xiě)。B、是使測(cè)試單元保持持久性。C、是可以利用既有的測(cè)試來(lái)編寫(xiě)相關(guān)的測(cè)試。3.2、JUnit的特征
A、使用斷言方法判斷期望值和實(shí)際值差異,返回Boolean值。B、測(cè)試驅(qū)動(dòng)設(shè)備使用共同的初始化變量或者實(shí)例。C、測(cè)試包結(jié)構(gòu)便于組織和集成運(yùn)行。D、支持圖型交互模式和文本交互模式。3.3、JUnit框架組成A、對(duì)測(cè)試目標(biāo)進(jìn)行測(cè)試的方法與過(guò)程集合,可稱(chēng)為測(cè)試用例(TestCase)。B、測(cè)試用例的集合,可容納多個(gè)測(cè)試用例(TestCase),將其稱(chēng)作測(cè)試包(TestSuite)。C、測(cè)試結(jié)果的描述與記錄。(TestResult)。D、測(cè)試過(guò)程中的事件監(jiān)聽(tīng)者(TestListener)。E、每一個(gè)測(cè)試方法所發(fā)生的與預(yù)期不一致?tīng)顩r的描述,稱(chēng)其測(cè)試失敗元素(TestFailure)F、JUnitFramework中的出錯(cuò)異常(AssertionFailedError)。JUnit框架是一個(gè)典型的Composite模式:TestSuite可以容納任何派生自Test的對(duì)象;當(dāng)調(diào)用TestSuite對(duì)象的run()方法是,會(huì)遍歷自己容納的對(duì)象,逐個(gè)調(diào)用它們的run()方法。(可參考《程序員》2023-6期)。3.4、JUnit的安裝和配置JUnit安裝步驟分解:在/junit/中下載JUnit包并將Junit壓縮包解壓到一個(gè)物理目錄中(例如C:\Junit3.8.1)。
記錄Junit.jar文件所在目錄名(例如C:\Junit3.8.1\Junit.jar)。
進(jìn)入操作系統(tǒng)Windows2000操作系統(tǒng)為準(zhǔn)),按照次序點(diǎn)擊“開(kāi)始設(shè)置控制面板”。
在控制面板選項(xiàng)中選擇“系統(tǒng)”,點(diǎn)擊“環(huán)境變量”,在“系統(tǒng)變量”的“變量”列表框中選擇“CLASS-PATH”關(guān)鍵字(不區(qū)分大小寫(xiě)),如果該關(guān)鍵字不存在則添加。
雙擊“CLASS-PATH”關(guān)鍵字添加字符串“C:\Junit3.8.1\Junti.jar”(注意,如果已有別的字符串請(qǐng)?jiān)谠撟址淖址Y(jié)尾加上分號(hào)“;”),這樣確定修改后Junit就可以在集成環(huán)境中應(yīng)用了。
對(duì)于IDE環(huán)境,對(duì)于需要用到的JUnit的項(xiàng)目增加到lib中,其設(shè)置不同的IDE有不同的設(shè)置。
3.5、JUnit中常用的接口和類(lèi)(以Test接口——運(yùn)行測(cè)試和收集測(cè)試結(jié)果Test接口使用了Composite設(shè)計(jì)模式,是單獨(dú)測(cè)試用例(TestCase),聚合測(cè)試模式(TestSuite)及測(cè)試擴(kuò)展(TestDecorator)的共同接口。
它的publicintcountTestCases()方法,它來(lái)統(tǒng)計(jì)這次測(cè)試有多少個(gè)TestCase,另外一個(gè)方法就是publicvoidrun(TestResult),TestResult是實(shí)例接受測(cè)試結(jié)果,run方法執(zhí)行本次測(cè)試。
TestCase抽象類(lèi)——定義測(cè)試中固定方法TestCase是Test接口的抽象實(shí)現(xiàn),(不能被實(shí)例化,只能被繼承)其構(gòu)造函數(shù)TestCase(stringname)根據(jù)輸入的測(cè)試名稱(chēng)name創(chuàng)建一個(gè)測(cè)試實(shí)例。由于每一個(gè)TestCase在創(chuàng)建時(shí)都要有一個(gè)名稱(chēng),若某測(cè)試失敗了,便可識(shí)別出是哪個(gè)測(cè)試失敗。
TestCase類(lèi)中包含的setUp()、tearDown()方法。setUp()方法集中初始化測(cè)試所需的所有變量和實(shí)例,并且在依次調(diào)用測(cè)試類(lèi)中的每個(gè)測(cè)試方法之前再次執(zhí)行setUp()方法。tearDown()方法則是在每個(gè)測(cè)試方法之后,釋放測(cè)試程序方法中引用的變量和實(shí)例。
開(kāi)發(fā)人員編寫(xiě)測(cè)試用例時(shí),只需繼承TestCase,來(lái)完成run方法即可,然后JUnit獲得測(cè)試用例,執(zhí)行它的run方法,把測(cè)試結(jié)果記錄在TestResult之中。
Assert靜態(tài)類(lèi)——一系列斷言方法的集合Assert包含了一組靜態(tài)的測(cè)試方法,用于期望值和實(shí)際值比對(duì)是否正確,即測(cè)試失敗,Assert類(lèi)就會(huì)拋出一個(gè)AssertionFailedError異常,JUnit測(cè)試框架將這種錯(cuò)誤歸入Failes并加以記錄,同時(shí)標(biāo)志為未通過(guò)測(cè)試。如果該類(lèi)方法中指定一個(gè)String類(lèi)型的傳參則該參數(shù)將被做為AssertionFailedError異常的標(biāo)識(shí)信息,告訴測(cè)試人員改異常的詳細(xì)信息。
JUnit提供了6大類(lèi)31組斷言方法,包括基礎(chǔ)斷言、數(shù)字?jǐn)嘌浴⒆址麛嘌?、布爾斷言、?duì)象斷言。
其中assertEquals(Objectexpcted,Objectactual)內(nèi)部邏輯判斷使用equals()方法,這表明斷言?xún)蓚€(gè)實(shí)例的內(nèi)部哈希值是否相等時(shí),最好使用該方法對(duì)相應(yīng)類(lèi)實(shí)例的值進(jìn)行比較。而assertSame(Objectexpected,Objectactual)內(nèi)部邏輯判斷使用了Java運(yùn)算符“==”,這表明該斷言判斷兩個(gè)實(shí)例是否來(lái)自于同一個(gè)引用(Reference),最好使用該方法對(duì)不同類(lèi)的實(shí)例的值進(jìn)行比對(duì)。asserEquals(Stringmessage,Stringexpected,Stringactual)該方法對(duì)兩個(gè)字符串進(jìn)行邏輯比對(duì),如果不匹配則顯示著兩個(gè)字符串有差異的地方。ComparisonFailure類(lèi)提供兩個(gè)字符串的比對(duì),不匹配則給出詳細(xì)的差異字符。
TestSuite測(cè)試包類(lèi)——多個(gè)測(cè)試的組合TestSuite類(lèi)負(fù)責(zé)組裝多個(gè)TestCases。待測(cè)得類(lèi)中可能包括了對(duì)被測(cè)類(lèi)的多個(gè)測(cè)試,而TestSuit負(fù)責(zé)收集這些測(cè)試,使我們可以在一個(gè)測(cè)試中,完成全部的對(duì)被測(cè)類(lèi)的多個(gè)測(cè)試。
TestSuite類(lèi)實(shí)現(xiàn)了Test接口,且可以包含其它TestSuites。它可以處理加入Test時(shí)的所有拋出的異常。
TestSuite處理測(cè)試用例有6個(gè)規(guī)約(否則會(huì)被拒絕執(zhí)行測(cè)試)
A測(cè)試用例必須是公有類(lèi)(Public)的B測(cè)試用例必須繼承與TestCase類(lèi)C測(cè)試用例的測(cè)試方法必須是公有的(Public)D測(cè)試用例的測(cè)試方法必須被聲明為VoidE測(cè)試用例中測(cè)試方法的前置名詞必須是testF測(cè)試用例中測(cè)試方法誤任何傳遞參數(shù)TestResult結(jié)果類(lèi)和其它類(lèi)與接口TestResult結(jié)果類(lèi)集合了任意測(cè)試?yán)奂咏Y(jié)果,通過(guò)TestResult實(shí)例傳遞個(gè)每個(gè)測(cè)試的Run()方法。TestResult在執(zhí)行TestCase是如果失敗會(huì)異常拋出
TestListener接口是個(gè)事件監(jiān)聽(tīng)規(guī)約,可供TestRunner類(lèi)使用。它通知listener的對(duì)象相關(guān)事件,方法包括測(cè)試開(kāi)始startTest(Testtest),測(cè)試結(jié)束endTest(Testtest),錯(cuò)誤,增加異常addError(Testtest,Throwablet)和增加失敗addFailure(Testtest,AssertionFailedErrort)
TestFailure失敗類(lèi)是個(gè)“失敗”狀況的收集類(lèi),解釋每次測(cè)試執(zhí)行過(guò)程中出現(xiàn)的異常情況。其toString()方法返回“失敗”狀況的簡(jiǎn)要描述3.6、JUnit一個(gè)實(shí)例在控制臺(tái)中簡(jiǎn)單的范例如下:
1、寫(xiě)個(gè)待測(cè)試的Triangle類(lèi),創(chuàng)建一個(gè)TestCase的子類(lèi)ExampleTest:
2、ExampleTest中寫(xiě)一個(gè)或多個(gè)測(cè)試方法,斷言期望的結(jié)果(注意:以test作為待測(cè)試的方法的開(kāi)頭,這樣這些方法可以被自動(dòng)找到并被測(cè)試)
3、ExampleTest中寫(xiě)一個(gè)suite()方法,它會(huì)使用反射動(dòng)態(tài)的創(chuàng)建一個(gè)包含所有的testXxxx方法的測(cè)試套件:
Junit本身的操作并沒(méi)有什么特別的地方。這里提供了6種測(cè)試項(xiàng)目,分別針對(duì)不同的測(cè)試對(duì)象或者可以說(shuō)是目標(biāo)。
testcase:這個(gè)是最常用的,也就是對(duì)程序代碼中類(lèi)的測(cè)試。
testsuite:這個(gè)更高一級(jí),可以一次行測(cè)試多個(gè)類(lèi)。其效果與分別進(jìn)行多個(gè)testcase是相同的。
jdbcfixture:這個(gè)是針對(duì)數(shù)據(jù)庫(kù)鏈接的測(cè)試。(很少用,不大懂。)我學(xué)的是默認(rèn)的jdbc的數(shù)據(jù)庫(kù)。
jndifixture:這個(gè)相當(dāng)于是一個(gè)容器測(cè)試。如果說(shuō)主要的內(nèi)容就是測(cè)試那些存放鏈接的fixture。
在編程的時(shí)候,經(jīng)常把一些常用的鏈接放在一個(gè)類(lèi)似于容器的東東里面,這樣,如果調(diào)用重復(fù)調(diào)用鏈接的話(huà),可以同一調(diào)用容器地址,再具體指向里面的鏈接。這是否是一種管理呢。^_^
comparisionfixture:這個(gè)也是比較少用的東東。
customfixture:這個(gè)是自定義設(shè)置。只是生成一個(gè)框架。junitx.framework包主要功能
該包以類(lèi)方法的方式擴(kuò)展junit.framework.Assert的功能。也就是這時(shí)候,可以不用繼承相應(yīng)的類(lèi),可以直接使用斷言的相關(guān)的功能。事實(shí)上基于元數(shù)據(jù)的測(cè)試框架都基本采用這種方式實(shí)現(xiàn)斷言。junitx.framework.Assert
junitx.framework.ArrayAssertjunitx.framework.ComparableAssert
junitx.framework.FileAssert
junitx.framework.ListAssert
junitx.framework.ObjectAssert
junitx.framework.NamingAssert
junitx.framework.OrderedTestSuite
junitx.framework.StringAssert
junitx.framework.ThrowableAssert
2.測(cè)試類(lèi)的私有屬性
2.1測(cè)試類(lèi)的私有屬性的實(shí)現(xiàn)
使用相關(guān)類(lèi)(junitx.util.PrivateAclearcase/"target="_blank">ccessor)的方法類(lèi)訪問(wèn)私有屬性和方法。參考:ExampleJUnit_Addons_Exampleexample1目錄下example1.TestAccount類(lèi)example1.Account類(lèi)2.2實(shí)現(xiàn)訪問(wèn)類(lèi)的屬性和方法的原理
利用Java的反射機(jī)制來(lái)實(shí)現(xiàn)的。l使用java.lang.Class的相關(guān)方法,獲得相關(guān)指定對(duì)象的Field,然后調(diào)用field.setAccessib
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 43708-2025科學(xué)數(shù)據(jù)安全要求通則
- GB/T 19343-2025巧克力及巧克力制品、代可可脂巧克力及代可可脂巧克力制品質(zhì)量要求
- 公司資金貸款合同范本
- 公司變?cè)靹趧?dòng)合同范本
- 醫(yī)療器械保險(xiǎn)銷(xiāo)售合同范本
- alc工程合同范本
- 從屬許可合同范本
- 保姆英語(yǔ)合同范本
- 上海遮光窗簾加盟合同范本
- 臨時(shí)活動(dòng)勞務(wù)派遣合同范例
- 湘教版二年級(jí)下冊(cè)美術(shù)教案
- 天津在津居住情況承諾書(shū)
- 2022年中考數(shù)學(xué)二輪專(zhuān)題復(fù)習(xí):二次函數(shù)性質(zhì)綜合題
- 男生青春期生理教育
- 現(xiàn)代漢語(yǔ)(黃伯榮、廖序東版)課件-第四章語(yǔ)法課件
- 統(tǒng)編版小學(xué)語(yǔ)文五年級(jí)下冊(cè)第四單元解讀與大單元設(shè)計(jì)思路
- 壓瘡護(hù)理質(zhì)控反饋
- 最大攝氧量的測(cè)定
- 山東春季高考Photoshop考試復(fù)習(xí)題庫(kù)(含答案)
- 湖南省長(zhǎng)沙市2023-2024學(xué)年八年級(jí)下學(xué)期入學(xué)考試英語(yǔ)試卷(附答案)
- 青海2024年01月青海省省直機(jī)關(guān)遴選公務(wù)員69人^2024年國(guó)家公務(wù)員考試考試大綱歷年真題筆試歷年高頻考點(diǎn)難、易錯(cuò)點(diǎn)薈萃附答案帶詳解
評(píng)論
0/150
提交評(píng)論