版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、如何利用JUnit進行單元測試Q1.四種java測試工具簡介java的測試工具有很多,其中以JUnit為基礎的測試框架共有4中,分別是JUnitHttpUnit、jWebUnit、以及StructsTestCase(框架測試用例)概念1、白盒測試把測試對象看作一個打開的盒子,程序內(nèi)部的邏輯結構和其他信息對測試人員是公開的,一般程序員進行的是白盒測試。 2、黑盒測試也稱功能測試,把程序看作一個不能打開的黑盒子,在完全不考慮程序內(nèi)部結構和內(nèi)部特性的情況下,在程序接口進行測試。黑盒測試著眼于程序外部結構,不考慮內(nèi)部邏輯結構,主要針對軟件界面和軟件功能進行測試。Q1.四種java測試工具簡介1.JUn
2、itJUnit 是一個開發(fā)源代碼的Java測試框架,用于編寫和運行可重復的測試。它是用于單元測試框架體系xUnit的一個實例。主要用于白盒測試。Q1.四種java測試工具簡介2.HttpUnit HttpUnit是在JUnit之上構建的測試框架,它支持web應用的黑盒測試。它是一種功能測試工具,你可以用它驗證軟件是否符合業(yè)務需求等web應用功能。Q1.四種java測試工具簡介3.jWebUnitjWebUnit是在HttpUnit上創(chuàng)建的一個輔助工具包,它減少測試web程序需要你寫的代碼。簡單的說,你可以把它當作HttpUnit的宏程序庫,提供到HttpUnit代碼段的快捷方式,它簡化了web
3、程序測試的代碼。Q1.四種java測試工具簡介4.StructsTestCase StructsTestCase是為測試Structs應用在JUnit基礎上創(chuàng)建的測試框架。因為使用Structs會使web程序容器間(in-container)的功能測試和單元測試變得復雜,StructsTestCase就是專為Struts程序的的容器間測試設計的。如何利用JUnit進行單元測試Q2.理解“單元測試(Unit Testing)”什么是單元測試?單元測試是最小粒度的測試,以測試某個功能或代碼塊。一般由程序員來做,因為它需要知道內(nèi)部程序設計和編碼的細節(jié),也就是說單元測試是白盒測試。Q2.理解“單元測試
4、(Unit Testing)”為什么要做單元測試?單元測試的目的,是將應用程序的所有源代碼,隔離成最小的可測試的單元,保證每個單元的正確性。理想情況下,如果每個單元都能保證正確,就能保證應用程序整體相當程度的正確性。Q2.理解“單元測試(Unit Testing)”怎么做單元測試?step1.配備軟件和環(huán)境step2.建立java項目并添加JUnit庫step3.修改項目目錄,建立src和testsrc目錄,并分別在目錄下建立同名的包step4.選取要測試的源文件,將其放置在src中step5.編寫對應單元的測試用例(Test Case)存在testsrc中step6.進行測試,根據(jù)測試結果更
5、改相應單元的源代碼JUnit單元測試step1我們需要配備以下軟件:1.Eclipse:最為流行的 IDE,它全面集成了 JUnit,并從版本 3.2 開始支持 JUnit 4。2.Ant:Ant是Annotation(注釋)的縮寫,它是基于 Java 的開源構建工具,Eclipse 中已經(jīng)集成了 Ant。3.JUnit:它的官方網(wǎng)站是 /。 若使用Eclipse,則無需配置和下載。JUnit單元測試step2建立java項目并添加JUnit庫:How:1.創(chuàng)建一個項目命名為test2.單擊右鍵選擇“屬性”選項3.單擊界面左側的“Java Build Path”4.選擇右側子頁面的“Add L
6、ibrary”5.將juint4添加到項目test下JUnit單元測試step2JUnit單元測試step3修改項目目錄,建立src和testsrc,并分別建立同名包:Why:為什么分別建立src和testsrc? 答:我們要將源代碼和測試代碼分別存儲,防止它們發(fā)生混淆。并且單元測試代碼是不會出現(xiàn)在最終產(chǎn)品中的,所以建議分開存儲。Why:為什么建立同名的package? 答:JUnit測試的思想就是在測試代碼中設定某一輸入值,將其作為參數(shù)傳入源代碼中,獲得測試結果,將測試結果與設定好的理想正確值做匹配,若完全匹配,則測試通過。也就是說,測試文件中,必然會調(diào)用源代碼中的方法,向其傳入?yún)?shù),因此必
7、須使用相同的package名,方便查找文件和方法的調(diào)用。JUnit單元測試step3修改項目目錄,建立src和testsrc,并分別建立同名包:Why:為什么建立保持代碼的隔離性,防止發(fā)生混亂How:1.選擇項目Test,并單擊右鍵選擇“屬性”2.選擇“Java Build Path”,并單擊“source”選項3.選擇“Add Folder”選項4.選擇“Create New Folder”并為其命名為testsrc5.在testsrc目錄下建立與src同名的packageJUnit單元測試step3JUnit單元測試step4選取要測試的單元,將源文件放置在src中:選取要測試的單元,將其
8、存儲在src目錄下即可,例如命名為A.java文件。JUnit單元測試step5編寫對應單元的測試用例存在testsrc中:編寫測試用例前,我們需要了解以下知識:從JUnit4開始,JUnit不再要求測試用例繼承TestCase基類,不再要求測試方法以test開頭。但為了讓JUnit發(fā)現(xiàn)系統(tǒng)的測試用例和測試方法,JUnit提供了Annotation修飾如下:(Annotation中文譯為注釋)Test:所有希望被運行的測試方法都應該使用該AnnotationBefore:如果希望每次運行測試方法之前先運行指定的回收資源的方法,則該回收資源的方法使用Before Annotation修飾.Aft
9、er:如果希望每次運行測試方法之后運行指定的回收資源的方法,則該回收資源的方法使用After Annotation修飾.Ignore:如果希望Junit忽略某個被測試的方法,可以使用Ignore Annotaion來修飾.JUnit單元測試step5編寫對應單元測試用例存在testsrc中:編寫測試用例時,我們需要遵守如下規(guī)則:(1)測試用例類使用public修飾(2)測試用例的測試方法使用public修飾(3)測試用例的測試方法的返回值應該是void(4)測試用例中測試方法不應該有任何參數(shù)JUnit單元測試step5編寫對應單元測試用例存在testsrc中:按照以上JUnit4的單元測試用例
10、的編寫規(guī)則,生成單元測試用例,存儲在testsrc目錄下,例如命名為TestA.java。JUnit單元測試step6進行測試,根據(jù)測試結果更改源文件中的相應單元代碼:點擊“Run As”選擇“JUnit Test”,進行測試。若出現(xiàn)如圖所示結果:則表示測試成功,該單元的代碼已經(jīng)達到要求,無需修改。JUnit單元測試step6進行測試,根據(jù)測試結果更改源文件中的相應單元代碼:若出現(xiàn)如圖所示結果:則表示測試不成功JUnit單元測試step6不成功Error:由測試用例代碼異常引起,也就是測試用例代碼本身編寫問題。Failure:由JUnit中用做匹配判定的函數(shù)引起,此時說明測試代碼的邏輯是正確的
11、,但通過傳測試參數(shù)進源代碼得到的結果,和理想中的結果不匹配,因此測試不成功,也就是說源代碼方法有問題。例子測試詞法分析中的Token類我們小組是以詞法分析中Token類為測試對象。目的是測試Token類中的幾種方法在輸入單詞后能否切出相應正確的Token序列。案例測試結果分析:Failure 測試失敗Ignore 忽略測試測試成功JUnit深入知識Q3.Fixture (fixture中文譯為:固定裝置)問題:在執(zhí)行一個或者多個測試方法時需要的一系列公共資源或者數(shù)據(jù),例如測試環(huán)境,測試數(shù)據(jù)等等。在編寫單元測試的過程中,你就會發(fā)現(xiàn)在大部分的測試方法在進行真正的測試之前都需要做大量的鋪墊,測試效率
12、低。解決方案:JUnit 專門提供了設置公共 Fixture 的方法,同一測試類中的所有測試方法都可以共用它來初始化 Fixture 和注銷 Fixture。Q3.Fixture和編寫 JUnit 測試方法一樣,公共 Fixture 的設置也很簡單,只需:1.使用注解 org.junit.Before 修飾用于初始化 Fixture 的方法。2.使用注解 org.junit.After 修飾用于注銷 Fixture 的方法。3.保證這兩種方法都使用 public void 修飾,而且不能帶有任何參數(shù)。Q4.Fixture的優(yōu)化使用Fixture:方法級別方法級別Fixture的執(zhí)行示意圖:Q4
13、.Fixture的優(yōu)化使用問題:若設置Fixture非常耗時時(如設置數(shù)據(jù)庫連接),而且對于不會發(fā)生變化的測試環(huán)境或測試數(shù)據(jù),每次執(zhí)行測試方法都要重復設置Fixture,豈不是非常耗時?解決方案:使用類別級的Fixture。Q4.Fixture的優(yōu)化使用Fixture:類別級類級別Fixture的執(zhí)行示意圖:Q4.Fixture的優(yōu)化使用類級別的 Fixture 設置方法,編寫規(guī)范如下:1.使用注解 org.junit.BeforeClass 修飾用于初始化 Fixture 的方法。2.使用注解 org.junit.AfterClass 修飾用于注銷 Fixture 的方法。3.保證這兩種方法
14、都使用 public static void 修飾,而且不能帶有任何參數(shù)。類級別的 Fixture 僅會在測試類中所有測試方法執(zhí)行之前執(zhí)行初始化,并在全部測試方法測試完畢之后執(zhí)行注銷方法.Q5.異常測試問題:如何測試源文件中的涉及到的拋出異常這項功能(即Exception)解決方案:JUnit中的異常測試Q5.異常測試注解 org.junit.Test 中有個非常有用的參數(shù):expected 。參數(shù) expected 代表測試方法期望拋出指定的異常,如果運行測試并沒有拋出這個異常,則 JUnit 會認為這個測試沒有通過。這為驗證被測試方法在錯誤的情況下是否會拋出預定的異常提供了便利。Q5.異常
15、測試例子:在源文件中,方法supportDBChecker 用于檢驗數(shù)據(jù)庫版本是否支持,若不支持,則會拋出異常UnsupportDBVersionException在測試用例中,我們?yōu)榱藴y試能否正常拋出這個異常,編寫異常測試方法代碼如下:又一個新概念出現(xiàn)了測試運行器,JUnit 中所有的測試方法都是由它負責執(zhí)行的。JUnit 為單元測試提供了默認的測試運行器,但 JUnit 并沒有限制使用默認的運行器。相反,你不僅可以定制自己的運行器(所有的運行器都繼承自 org.junit.runner.Runner),而且還可以為每一個測試類指定使用某個具體的運行器。指定方法也很簡單,使用注解 org.j
16、unit.runner.RunWith 在測試類上顯式的聲明要使用的運行器即可:Q6.測試運行器介紹Q7.參數(shù)化測試問題:為了保證單元測試的嚴謹性,我們會模擬不同的測試數(shù)據(jù)來測試方法的處理能力,但這些測試方法都是大同小異,代碼結構都是相同的,不同的僅僅是測試數(shù)據(jù)和期望值,造成的代碼冗余怎么處理?解決方案:JUnit4的參數(shù)化測試Q8.參數(shù)化測試例子:有這樣一個接口,對其執(zhí)行單元測試,該接口實現(xiàn)的是加法計算: 被測試類JDemo代碼參數(shù)化測試的編寫要求:1.為準備使用參數(shù)化測試的測試類指定特殊的運行器 org.junit.runners.Parameterized。2.為測試類聲明幾個變量,分別用于存放期望值和測試所用數(shù)據(jù)。3.為測試類聲明一個使用注解 org.junit.runners.Parameterized.Parameters 修飾的,返回值為 java.util.Collection 的公共靜態(tài)方法,并在此方法中初始化所有需要測試的參數(shù)對。4.為測試類聲明一個帶有參數(shù)的公共構造函數(shù),并在其中為第二個環(huán)節(jié)中聲明的幾個變量賦值。5.編寫測試方法,使用定義的變量
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 六盤水職業(yè)技術學院《典型零件的工藝設計》2023-2024學年第一學期期末試卷
- 金肯職業(yè)技術學院《微機原理含實驗》2023-2024學年第一學期期末試卷
- 新蘇教版一年級下冊數(shù)學第1單元第3課時《8、7加幾》作業(yè)
- 懷化學院《影視創(chuàng)作前沿技術》2023-2024學年第一學期期末試卷
- 湖北理工學院《人力資源管理咨詢與診斷》2023-2024學年第一學期期末試卷
- 資陽口腔職業(yè)學院《測試與傳感器技術》2023-2024學年第一學期期末試卷
- 小學黨員聯(lián)系群眾、服務群眾制度
- 長沙學院《材料加工過程多尺度模擬》2023-2024學年第一學期期末試卷
- 寒露節(jié)氣策劃講座模板
- 職業(yè)導論-房地產(chǎn)經(jīng)紀人《職業(yè)導論》名師預測卷3
- 礦工睡崗檢查書
- 仁恒江灣城修建幕墻工程監(jiān)理實施細則
- 廣東省佛山南海區(qū)四校聯(lián)考2023屆中考試題猜想數(shù)學試卷含解析
- 2023年江蘇蘇州工業(yè)園區(qū)管委會招聘筆試參考題庫附帶答案詳解
- GB/T 10752-2005船用鋼管對焊接頭
- 酒店婚宴銷售年度工作計劃4篇
- 健康教育工作考核記錄表
- 裝飾工程施工技術ppt課件(完整版)
- SJG 05-2020 基坑支護技術標準-高清現(xiàn)行
- 汽車維修價格表
- 司爐崗位應急處置卡(燃氣)參考
評論
0/150
提交評論