




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、軟件工程作業 在Eclipse中用JUnit實現單元測試學院:軟件04級4班任課教師:尹皓小組成員及分工:JUnit實現單元測試: 戈文一 0443111050(組長)黃壽鑫 0443111282(副組長)張福愷 0443111064(組員)孫超宇 0443111062(組員)李陽 0443111236(組員)UML assignments: 趙剛:0443111255(組員)王紅松 0443111174(組員)王明飛 0443111006(組員)Using Eclipse and Junit for unit test一、 Eclipse 和 Junit簡介:Eclipse是一個開放源代碼的
2、、基于Java的可擴展開發平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組合構建開發環境。Eclipse附帶了一個標準的插件集,包括Java開發工具(JDK)。Eclipse平臺為插件開發提供一組功能強大的服務和API.它使來自完全不同的供應商的工具之間的集成變得平滑,為不同類型的開發工作創建了一個無縫的環境。其中就包括著名的工程測試框架工具Junit。JUnit是一個開源的java單元測試框架。在1997年,由 Erich Gamma 和 Kent Beck 開發完成。這兩個牛人中 Erich Gamma 是 GOF 之一;Kent Beck 則在 XP 中有重要的貢獻(你覺得眼
3、熟一點都不奇怪)。正如常言道:“麻雀雖小,五臟俱全?!?JUnit設計的非常小巧,但是功能卻非常強大。下面是JUnit一些特性的總結:1) 提供的API可以讓你寫出測試結果明確的可重用單元測試用例2) 提供了三種方式來顯示你的測試結果,而且還可以擴展3) 提供了單元測試用例成批運行的功能4) 超輕量級而且使用簡單,沒有商業性的欺騙和無用的向導5) 整個框架設計良好,易擴展對不同性質的被測對象,如Class,Jsp,Servlet,Ejb等,Junit有不同的使用技巧。二、 軟件測試基礎:軟件測試就是在軟件投入使用前,對軟件需求分析,設計規格說明和編碼的最后審查,這是軟件質量保證的關鍵步驟。軟件
4、測試是為了發現錯誤而執行程序的過程。軟件測試在軟件開發過程中橫跨兩個階段:通常在編寫出每一個模塊之后就對它做必要的測試(稱為單元測試)。編碼和單元測試屬于軟件開放過程中的同一階段。在結束這個階段后對軟件系統還要進行各種綜合測試,這是軟件開發過程中的另一個獨立階段,即測試階段。1、 軟件測試的目的:應用 Grenford J.Myers在The Art of Software Testing一書中的觀點,軟件測試的目的就是:(1) 為了發現錯誤而執行程序的過程;(2) 為了證明程序有錯,而不是證明程序沒有錯誤;(3) 一個好的測試用例是在于它能發現至今未發現的錯誤;(4) 一個成功的測試是發現了
5、至今未發現的錯誤測試。2、 軟件的測試原則:(1) 盡早地不斷地進行軟件測試。(2) 測試實例應由測試輸入數據和與之對應地預期輸出結果兩部分組成。(3) 整體測試工作應該由獨立地裝業地軟件測試機構來完成。(4) 在設計測試用例時,應該包括合理的輸入條件和不合理的輸入條件。(5) 充分注意測試中的群集現象。經驗表明,測試后程序殘存的錯誤數目與該程序中已發現的錯誤數目或檢錯率成正比。(6) 嚴格執行測試計劃,排除測試的隨意性。(7) 對每一個測試結果做全面的檢查與核實。(8) 妥善保存測試計劃,測試用例,出錯統計和最終分析報告,為維護提供方便3、 軟件測試種類:(1) 單元測試:是為檢查個別模塊服
6、務的。(2) 用戶測試: 這是功能的、系統的并且認可的測試。(3) 集成測試:是在用戶測試和單元測試的十字路口。(4) 開發者測試:就是那些開發者校驗整段代碼、新加的代碼、新加的函數。4、 軟件測試過程:(1) 編寫測試式樣書(2) 代碼評審(3) 單元測試(4) 集成測試(5) 驗收測試5、 軟件測試方法:(1) 黑盒測試:又稱功能測試或數據驅動測試,它是在已知產品所應具有的功能,通過測試每個功能是否都正常使用。這種測試是在軟件的接口處進行的,測試人員不需要考慮程序內部的邏輯結構和內部特征,只依據程序的需求說明書,檢查程序的功能是否符合它的功能說明。(2) 白盒測試:又稱結構測試或邏輯驅動測
7、試,它是知道產品內部工作過程,可通過測試來檢測產品內部動作是否按照規格說明書的規定正常進行,按照程序內部的結構測試程序,檢驗程序中的每條通路是否都有按預定要求正常工作,而不顧它的功能。三、安裝JUnit為了使用JUnit(更多細節請參考 ),必須在project的classpath中添加junit.jar。因此,建立一個新的classpath變量JUNIT。選擇Window->Preferences菜單欄打開Preferences對話框,展開Java結點,選擇Build Path->Classpath Variables項。然后點擊New按鈕打
8、開New Variable Entry菜單,輸入新的變量名:JUNIT,設置路徑為junit.jar.在Eclipse3.0.2中,能夠在eclipse/plugins/org.junit_3.8.1/junit.jar下找到junit.jar。然后點擊OK。為了debug的需要,也要添加JUnit包的源代碼(這是一個可選步驟;在此例子中我們不使用JUnit源代碼)。你將在eclipsepluginsorg.eclipse.jdt.source_3.0.2src目錄中發現許多包的源代碼的JAR文件。為JUnit源代碼創建一個新的變量,按照上面創建JUNTIT的步驟,不過此變量名為JUNIT_S
9、RC(通常在源代碼變量前面添加前綴_SRC)并且將它連接到eclipsepluginsorg.eclipse.jdt.source_3.0.2srcorg.junit_3.8.1/junitsrc.zip。創建此變量以后,在project JN_test上單擊鼠標右鍵,選擇Properties,打開JN_test的屬性對話框,點擊Java Build Path項和Libraries選項。并Add Variable,添加JUNIT變量,所得如圖所示:當展開一個JAR文件結點的時候,能夠指定在何處尋找相關聯的源代碼和Javadoc。為了對這里的源代碼使用JUNIT_SRC,選擇結點中的Source
10、 Attachement,單擊edit打開Source Attachment Configuration對話框。點擊Variable按鈕,雙擊JUNIT_SRC,并點擊OK關閉此對話框。如圖所示:這里我們已經使JUnit的源代碼能在Eclipse上使用。點擊OK關閉JN_test的屬性對話框。四、使用JUnit進行測試JUnit是與Eclipse一起提供的一個開源測試框架。在同一個Project中,可以創建與其它class無異的“基于JUnit”的class,并使用此JUnit代碼去測試project中的其它class。JUnit的此種使用方式能夠為每位在此應用程序上工作的人員構建一組標準的測
11、試。如果當更改了應用程序代碼以后,他們所需做的工作僅僅是點擊幾下按鈕來驗證此應用程序是否依然能夠通過標準測試。JUnit被用來測試代碼,并且它是由能夠測試不同條件的斷言方法(assertion method)組成,如下所示:assertEquals(a, b) 測試a是否等于b(a和b是原始類型數值(primitive value)或者必須為實現比較而具有equal方法)assertFalse(a) 測試a是否為false(假),a是一個Boolean數值。assertNotNull(a) 測試a是否非空,a是一個對象或者null。assertNotSame(a, b) 測試a和b是否沒有都引
12、用同一個對象。assertNull(a) 測試a是否為null,a是一個對象或者null。assertSame(a, b) 測試a和b是否都引用同一個對象。assertTrue(a) 測試a是否為true(真),a是一個Boolean數值。我們使用這些方法來構建JUnit測試。當運行一個JUnit應用程序時,它打開自己的視圖(view)來立即指示哪個測試通過了,哪個測試失敗了。1、創建測試應用程序我們將在一個例子中使用JUnit來展示它如何在我們創建的應用程序JN_test中運行。此應用程序的意圖是簡單地為一個整型數組賦值,并通過get和set方法來對它們進行存取。特別地,我們將包含三個方法,
13、它們用來返回可能被用在JUnit中測試的值。allocate 分配一個整型數組并且對其賦值;返回新分配的數組。set 為整型數組賦值;如果成功返回true,否則返回false。get 從整型數組中取值;返回需要的數值。JN_test的最初版本:public class JN_test private int array;public int allocate()array0 = 0;array1 = 1;array2 = 2;return array;public int get(int index)return arrayindex;public boolean set(int index,
14、int value)if (index < array.length && index >= 0) arrayindex = value;return true;elsereturn false; allocate方法分配一個整型數組,對其進行賦值,并返回此數組:private int array;public int allocate( ) array0=0;array1=1;array2=2;return array; get方法在數組的給定位置取整數值:public int get(int index) return arrayindex; set方法為給定的
15、位置賦整數值,按條件返回true或者false。public boolean set(int index, int value) if (index < array.length && index >= 0) arrayindex=value;return true; else return false; 接下來就是使用JUnit測試所有這些方法:allocate , set和get。2、正式使用JUnit測試一個應用程序現在已經準備好測試JN_test應用程序。為了測試,還需要使用JUnit Wizard創建一個新的class來擴展JUnit測試用例。要使用此wi
16、zard,請在Package Explorer 中的JN_test上單擊右鍵,并且選擇New->Other來打開一個New對話框,如圖所示:現在展開Java結點并選擇JUnit,然后再選擇JUnit Test Case,單擊Next按鈕,如圖:通常情況下JUnit類命名要和被它測試的類同名,并在其后面添加Test。所以命名為JN_testTest。另外選擇setUp和tearDown方法,這些方法建立和清理在測試用例中的數據和(或者)對象(它們在JUnit中的術語為fixtures)。按照上圖填好后,點擊Next。如圖:在此對話框中,選擇你想要測試的方法,這樣JUnit Wizard能夠
17、為它們創建存根(stub)。因為我們想要測試allocate,see和get,選擇它們,并點擊Finish按鈕來創建JN_testTest class。如下所示:在JN_testTest class中為allocate,set和get方法都創建了一個方法存根:testAllocate, testSet, 和 testGet。 得到JN_testTest.java 的代碼如下:import junit.framework.TestCase;public class JN_testTest extends TestCase protected void setUp() throws Excepti
18、on super.setUp();protected void tearDown() throws Exception super.tearDown();public void testAllocate() fail("Not yet implemented");public void testGet() fail("Not yet implemented");public void testSet() fail("Not yet implemented");下一步就是在這些存根中添加代碼,以讓它們來調用JN_test類中的alloc
19、ate,set和get方法,這樣就能對結果使用JUnit斷言方法。我們將需要一個JN_test類的一個對象來調用這些方法,將其命名為testObject。要創建testObject使用JUnit代碼中的setUp方法。此方法在JUnit測試開始之前就被調用,這樣我們將從將要測試的JN_test類中創建testObject。JN_test testObject; protected void setUp() throws Exception super.setUp(); testObject = new JN_test(); 現在就可以用這個對象來進行測試了。比如,allocate方法是用來創建
20、一個整型數組并返回此數組的,所以在testAllocate中使用assertNotNull測試并確信此數組不為空:public void testAllocate() assertNotNull(testObject.allocate(); The get method is supposed to retrieve a value from the array, so we can test that method using assertEquals with a test value in testGet:get方法從數組中取得數值,在testGet中用assertEquals來測試此方
21、法。public void testGet() assertEquals(testObject.get(1),1); And the set method is supposed to return true if it's been successful, so we can test it with assertTrue like thisset方法在成功的時候返回true,使用assertTrue來測試它。public void testSet() assertTrue(testObject.set(2,4); 在添加代碼后,選擇Package Explorer 中的JN_testTest,并選擇Run As->JUnit Test 菜單項,如圖所示:上面的圖示說明這里有錯誤,在JUnit視圖中,三個測試都被打上了叉,表示測試失敗,我們先檢查第一個測試,testAllocate,它測試的是被創建的數組不能為null:public void testAllocate( ) assertNotNull(testObject.allocate
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論