Java Web編程技術 課件 附錄A:JUnit測試框架_第1頁
Java Web編程技術 課件 附錄A:JUnit測試框架_第2頁
Java Web編程技術 課件 附錄A:JUnit測試框架_第3頁
Java Web編程技術 課件 附錄A:JUnit測試框架_第4頁
Java Web編程技術 課件 附錄A:JUnit測試框架_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

JavaWeb編程技術本附錄簡單介紹使用JUnit進行單元測試。JUnit是一個非常流行的Java程序的單元測試框架,它廣泛應用在軟件測試中。測試類型概述在項目中添加JUnit框架開發(fā)一個簡單的測試測試JDBC應用程序附錄AJunit測試框架軟件測試(softwaretesting)是軟件開發(fā)中一個重要的環(huán)節(jié),尤其是對于大型軟件,在發(fā)布之前都必須經(jīng)過測試。軟件測試有多種類型,通常需要使用測試工具完成。測試類型概述測試的主要目的是盡早地發(fā)現(xiàn)程序錯誤。邏輯上認為,錯誤發(fā)現(xiàn)的越早,修復的成本越低。當軟件發(fā)布后,如果客戶發(fā)現(xiàn)了錯誤,那么軟件修復的成本就會很大。在軟件開發(fā)中有許多不同的測試,根據(jù)測試的目的不同,可以分為不同的層次,具體如下所示。單元測試。單元測試是測試的根基,它在軟件開發(fā)過程中進行的是最底層的測試。它的重點是方法或類(單個單元)的測試,分別測試每個方法或類,以確定它們是否按預期工作。集成測試。是單獨的、經(jīng)過驗證的軟件組件被組合在一個更大的聚合中并一起測試。系統(tǒng)測試。是在一個完整的系統(tǒng)上進行測試,以評估其是否符合規(guī)范。系統(tǒng)測試不需要了解設計或代碼,僅關注整個系統(tǒng)的功能。驗收測試。驗收測試用某種場景和測試用例來檢驗應用程序是否滿足最終用戶的要求。A.1單元測試

單元測試是最重要的測試。在測試中我們可以使用軟件編寫測試用例。在Java領域,最著名的單元測試軟件是JUnit。JUnit是一種單元測試的框架,它是KentBeck和ErichGamma在1995年底開發(fā)的。

JUnit實際上已經(jīng)成為Java應用程序單元測試的標準。JUnit5(/junit5)。與JUnit之前的版本不同,JUnit5由多個不同的模塊組成,它們被分成3個子項目:JUnitPlatform、JUnitJupiter

和JUnitVintageJUnitPlatform,是JUnit在Java虛擬機(JVM)啟動測試框架的基礎。此模塊還提供了從控制臺、IDE或構建工具啟動測試的API。JUnitJupiter,結合了新的編程和擴展模型,在JUnit5中用于編寫測試和擴展。此模塊的名字來自太陽系中第5顆行星即木星,也是太陽系中最大的一顆行星。JUnitVintage,用于在平臺上運行基于JUnit3和JUnit4測試的引擎,確保跟以前版本向后的兼容性。A.1在項目中添加JUnit框架A.2要在項目中使用JUuit5,需要在pom.xml文件中配置依賴項。在IntelliJIDEA中,如果創(chuàng)建由Maven管理的項目(如JakartaEE項目),則在pom.xml文件中自動添加JUnit的依賴項。<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.9.2</version><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.9.2</version><scope>test</scope></dependency>一個簡單的例子A.3下面通過一個簡單的例子說明如何使用JUnit進行單元測試。Calculator是一個簡單的類,它定義了add()和subtract()兩個方法分別實現(xiàn)兩個整數(shù)的加減運算。清單A.2Calculator.java類publicclassCalculator{publicintadd(inta,intb){returna*b;//這里將運算符寫錯(+號寫成了*號),將來測試將失敗}publicintsubtract(inta,intb){returna-b;}}一個簡單的例子為了對Calculator類的兩個方法進行單元測試,需要定義一個測試類。一般來說,測試類的名稱是被測試類名加Test,例如為Calculator類編寫的測試類名應為CalculatorTest。另外,測試類與被測試類應該放在同一個包中。在測試類中應該為被測試類的每個方法編寫一個測試方法,測試方法沒有返回值。在測試方法中應該初始化被測試的類,然后調(diào)用被測試的方法并驗證結果。測試方法需要使用org.junit.jupiter.api包的Test注解標注。此外,還可以通過BeforeEach注解創(chuàng)建一個初始化方法。初始化方法在被測試方法被調(diào)用之前調(diào)用。還可以使用AfterEach注解創(chuàng)建一個清理方法,清理方法是在被測試方法調(diào)用后調(diào)用,在清理方法中可以釋放在測試期間使用的資源。下面的CalculatorTest類是Calculator類的測試類。A.3CalculatorTest.java清單A.3publicclassCalculatorTest{Calculatorcalculator=null;@BeforeEachpublicvoidsetUp(){calculator=newCalculator();}@AfterEachpublicvoidcleanUp(){calculator=null;}@TestpublicvoidtestAdd(){intresult=calculator.add(5,8);assertEquals(13,result);//第1個參數(shù)是期望值,第2個參數(shù)是結果}@TestpublicvoidtestSubtract(){intresult=calculator.subtract(5,8);assertEquals(-3,result);}}一個簡單的例子要運行測試類的某個測試方法,在IDEA的編輯窗口方法名左側,單擊小三角符號(與執(zhí)行main方法相同),然后選擇運行方法。如果測試沒有通過,在控制臺顯示有關信息。例如,執(zhí)行add()測試方法,輸出結果如圖A-1所示。A.3測試JDBC應用程序A.4JDBC是一種JavaAPI,定義了客戶如何訪問數(shù)據(jù)庫,它提供了Java程序訪問關系數(shù)據(jù)庫的方法。我們可以編寫測試類對數(shù)據(jù)庫操作方法進行測試。在本書5.5節(jié)我們使用DAO設計模式開發(fā)了ProductDaoImpl類對數(shù)據(jù)庫操作(見清單5.11),其中包含3個方法,下面我們編寫一個測試類對這幾個方法測試。清單A.4ProductDaoTest.java測試類ProductDaoTest.java清單A.4@DisplayName("這是一個測試類")publicclassProductDaoTest{

privateProductDaoproductDao=newProductDaoImpl();@Test@DisplayName("測試能否鏈接數(shù)據(jù)庫")publicvoidtestConnection(){//測試是否能建立連接對象Connectionconnection=null;try{connection=productDao.getConnection();}catch(SQLExceptionsqle){System.out.println(sqle);}assertNotNull(connection);}

@Test@DisplayName("測試插入一條記錄")publicvoidtestAddProduct(){//測試addProduct()方法Productproduct=newProduct(222,"智能手機","華為MatePro",2500.00);intn=0;try{

n=productDao.addProduct(product);}catch(SQLExceptionsqle){System.out.println(sqle);}

assertEquals(1,n);}@Test@DisplayName("測試按商品號查詢商品")publicvoidtestFindProductById(){//測試findProductById()方法Productproduct=newProduct();try{product=productDao.findProductById(101);}catch(SQLExceptionsqle){System.out.println(sqle);}assertNotNull(product);}@Test@DisplayName("測試查詢所有商品")publicvoidtestFindAllProduct(){//測試findAllProduct()方法List<Product>productList=null;try{productList=productDao.findAllProduct();}catch(SQLExceptionsqle){System.out.println(sqle);}

assertNotNull(productList);

assertEquals(2,productList.size());for(inti=0;i<productList.size();i++){

assertNotNull(productList.get(i).getName());System.out.println(productList.get(i).getName());}}}附錄A知識點總結軟件測試有多種類型,根據(jù)測試的目的不同,可以分為不同的層次,包括:單元測試、集成測試、系統(tǒng)測試和驗收測試等。單元測試是最重要的測試。在Java領域,最著名的單元測試軟件是

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論