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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

JUnit實(shí)際上已經(jīng)成為Java應(yīng)用程序單元測(cè)試的標(biāo)準(zhǔn)。JUnit5(/junit5)。與JUnit之前的版本不同,JUnit5由多個(gè)不同的模塊組成,它們被分成3個(gè)子項(xiàng)目:JUnitPlatform、JUnitJupiter

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

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

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

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

assertEquals(1,n);}@Test@DisplayName("測(cè)試按商品號(hào)查詢商品")publicvoidtestFindProductById(){//測(cè)試findProductById()方法Productproduct=newProduct();try{product=productDao.findProductById(101);}catch(SQLExceptionsqle){System.out.println(sqle);}assertNotNull(product);}@Test@DisplayName("測(cè)試查詢所有商品")publicvoidtestFindAllProduct(){//測(cè)試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知識(shí)點(diǎn)總結(jié)軟件測(cè)試有多種類型,根據(jù)測(cè)試的目的不同,可以分為不同的層次,包括:?jiǎn)卧獪y(cè)試、集成測(cè)試、系統(tǒng)測(cè)試和驗(yàn)收測(cè)試等。單元測(cè)試是最重要的測(cè)試。在Java領(lǐng)域,最著名的單元測(cè)試軟件是

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論