軟件測試實驗-JUnit單元測試.doc_第1頁
軟件測試實驗-JUnit單元測試.doc_第2頁
軟件測試實驗-JUnit單元測試.doc_第3頁
軟件測試實驗-JUnit單元測試.doc_第4頁
軟件測試實驗-JUnit單元測試.doc_第5頁
免費預覽已結束,剩余12頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第三章 JUnit單元測試實驗1 開始使用JUnit【實驗目的】1、 學習使用JUnit4.X進行單元測試; 2、 掌握JUnit4.X編寫測試代碼的方法;3、 應用JUnit進行單元測試,掌握最佳實踐編寫測試代碼。【實驗環(huán)境】1、 Windows環(huán)境,MyEclipse或Eclipse,JUnit4.x。2、 每個學生操作1臺電腦?!緦嶒炘怼縅Unit是一個開源的Java編程語言的單元測試框架,最初由 Erich Gamma 和 Kent Beck 編寫。Junit測試是一種白盒測試工具。JUnit是一套框架,繼承TestCase類,就可以用Junit進行自動測試了。具有JUnit經驗對于應用“測試驅動開發(fā)(TDD)”的程序開發(fā)模型是非常重要的。JUnit本質上是一套框架,即開發(fā)者制定了一套條條框框,遵循這此條條框框要求編寫測試代碼,如繼承某個類,實現某個接口,就可以用JUnit進行自動測試了。由于JUnit相對獨立于所編寫的代碼,可以測試代碼的編寫可以先于實現代碼的編寫,XP 中推崇的 test first design的實現有了現成的手段:用JUnit寫測試代碼,寫實現代碼,運行測試,測試失敗,修改實現代碼,再運行測試,直到測試成功。以后對代碼的修改和優(yōu)化,運行測試成功,則修改成功。Java 下的 team 開發(fā),采用 cvs(版本控制) + ant(項目管理) + JUnit (集成測試) 的模式時,通過對ant的配置,可以很簡單地實現測試自動化。【實驗內容】根據下面的實驗步驟完成實驗。1、 JUnit包下載。 (1) 從下載Junit,打開該鏈接,會有一個下載鏈接,下載Junit4.X.zip,保存在用戶機的文件系統(tǒng)中。(2) 解包Junit-4.X,得到如圖3-1的解包文件。圖1 Junit解包文件表1 Junit文件說明文件/目錄描 述junit.jarJUnit框架結構、擴展和測試運行器的二進制發(fā)布src.jarJUnit的源代碼,包括一個 Ant 的buildfile文件junit是個目錄,內有JUnit自帶的用JUnit編寫的測試示例程序javadocJUnit完整的API文檔doc一些文檔和文章,包括“Test Infected: Programmers Love Writing Tests”和其它一些資料,可以幫助我們入門。(3) 配置(以JUnit4.8.2為例)。步驟如下: 右擊“我的電腦”-“屬性”-高級-環(huán)境變量; 在系統(tǒng)變量中選擇“CLASSPATH”(如果沒有則新建一個,變量名CLASSPATH,變量值d:junit4.8.2junit-4.8.2.jar;d:junit4.8.2); 如果有CLASSPATH,將d:junit4.8.2junit-4.8.2.jar;d:junit4.8.2加入到變量值即可,多個中間需用;隔開。圖2 Junit配置成功 (4) 檢驗:運行中輸入cmd輸入命令:java org.junit.runner.JUnitCore org.junit.tests.AllTests配置成功,如圖2所示。2、 編寫JUnit測試用例。使用JUnit 的最佳實踐:(1) 新建一個名為test的source folder,用于存放測試類源代碼;(2) 目標類與測試類應該位于同一個包下面,這樣測試類中就不必導入源代碼所在的包,因為他們位于同一個包下面;(3) 測試類的命名規(guī)則:假如目標類是Calculator,那么測試類應該命名為TestCalculator或者是CalculatorTest。下面將以一個具體的實例進行說明。(1) 新建一Java Project。圖3 新建Java Project(2) 配置構建路徑。圖4 配置構建路徑 (3) Add Library-JUnit 4。圖5 Add Library圖6 選擇JUnit 4(1)圖7 選擇JUnit 4(2)(4) 建一個包com.test 并在此包下建一個除法類:Divide。圖8 類Divide Divide類的程序源代碼如下所示:package com.test;public class Divide private static int result;public void divide(int num)result/=num;public int getResult()return result;public void setResult(int result)Divide.result=result;代碼編寫完成后,進行調試編譯,確保沒有語法錯誤。 (5) 右鍵Divide類。圖9 新建JUnit Test Case(1)圖10 新建JUnit Test Case(2)圖11 新建JUnit Test Case(3)MyEclipse會自動為測試類取名:被測試類+Test,單擊Next就可以了。根據圖12選擇需要進行測試的方法。注意:測試類之所以使用“Test”開頭或“Test”結尾,是為了更好的區(qū)分測試類與被測試類。圖12 選擇需要測試的方法(6) 創(chuàng)建測試用例。首先創(chuàng)建一個默認的測試用例。圖13 產生默認的測試用例 (7) 執(zhí)行測試用例。如圖14所示。測試結果:紅色,測試失敗。圖14 運行測試用例圖15 測試結果 所有類測試結果(8) 修改測試用例:DivideTest.java。具體代碼如圖16所示。新測試用例運行后的測試結果如圖17所示。注意:測試方法必須使用注解 org.junit.Test 修飾。 測試方法必須使用 public void 修飾,而且不能帶有任何參數。測試方法在JUnit4.X中沒有要求,但是為了使得命名意義,一般推薦采用“test”+“被測試方法”的命名規(guī)則。assertEquals 是由 JUnit 提供的一系列判斷測試結果是否正確的靜態(tài)斷言方法(位于類 org.junit.Assert 中)之一,我們使用它將執(zhí)行結果 result 和預期值“result”進行比較,來判斷測試是否成功。圖16 修改后的測試用例圖17 修改后的測試用例的測試結果綠色的進度條提示我們,測試運行通過了。但現在就宣布代碼通過了單元測試還為時過早。記住:你的單元測試代碼不是用來證明你是對的,而是為了證明你沒有錯。因此單元測試的范圍要全面,比如對邊界值、正常值、錯誤值得測試;對代碼可能出現的問題要全面預測,而這也正是需求分析、詳細設計環(huán)節(jié)中要考慮的。3、 應用JUnit對類WordDealUtil編寫測試代碼。(1) 被測試程序說明:對名稱、地址等字符串格式的內容進行格式檢查。將Java對象名稱(每個單詞的頭字母大寫)按照數據庫命名的習慣進行格式化格式化后的數據為小寫字母,并且使用下劃線分割命名單詞。import java.util.regex.Matcher;import java.util.regex.Pattern;/* * 對名稱、地址等字符串格式的內容進行格式檢查 * 或者格式化的工具類 */public class WordDealUtil /* * 將Java對象名稱(每個單詞的頭字母大寫)按照 * 數據庫命名的習慣進行格式化 * 格式化后的數據為小寫字母,并且使用下劃線分割命名單詞 * 例如:employeeInfo 經過格式化之后變?yōu)?employee_info * param nameJava對象名稱 */public static String wordFormat4DB(String name)Pattern p = Ppile(A-Z);Matcher m = p.matcher(name);StringBuffer sb = new StringBuffer();while(m.find()m.appendReplacement(sb, _+m.group();return m.appendTail(sb).toString().toLowerCase();(2) 添加測試代碼。import static org.junit.Assert.assertEquals;import org.junit.Test;public class TestWordDealUtil /測試wordFormat4DB正常運行的情況Test public void wordFormat4DBNormal()String target = employeeInfo;String result = WordDealUtil.wordFormat4DB(target);assertEquals(employee_info, result);推薦每編寫完一個測試方法,則執(zhí)行”run”,看測試結果,結果應該是通過的。測試結果通過:(3) 繼續(xù)添加測試代碼,并運行看測試結果。public class TestWordDealUtil /測試 null 時的處理情況Test public void wordFormat4DBNull()String target = null;String result = WordDealUtil.wordFormat4DB(target);assertNull(result);/測試空字符串的處理情況Test public void wordFormat4DBEmpty()String target = ;String result = WordDealUtil.wordFormat4DB(target);assertEquals(, result);/測試當首字母大寫時的情況Test public void wordFormat4DBegin()String target = EmployeeInfo;String result = WordDealUtil.wordFormat4DB(target);assertEquals(employee_info, result);/測試當尾字母為大寫時的情況Test public void wordFormat4DBEnd()String target = employeeInfoA;String result = WordDealUtil.wordFormat4DB(target);assertEquals(employee_info_a, result);/測試多個相連字母大寫時的情況Test public void wordFormat4DBTogether()String target = employeeAInfo;String result = WordDealUtil.wordFormat4DB(target); assertEquals(employee_a_info, result);再次運行測試。很遺憾,JUnit 運行界面提示我們有兩個測試情況未通過測試當首字母大寫時得到的處理結果與預期的有偏差,造成測試失?。╢ailure);而當測試對 null 的處理結果時,則直接拋出了異常測試錯誤

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論