聲明:本欄目所使用的素材都是凱哥學(xué)堂VIP學(xué)員所寫(xiě)害碾,學(xué)員有權(quán)匿名喻括,對(duì)文章有最終解釋權(quán)楞泼;凱哥學(xué)堂旨在促進(jìn)VIP學(xué)員互相學(xué)習(xí)的基礎(chǔ)上公開(kāi)筆記炮捧。
這個(gè)綜合例題主要就是使用JDBC的方式來(lái)對(duì)數(shù)據(jù)庫(kù)表格進(jìn)行增庶诡、刪、查咆课、改操作末誓,其中還要逐個(gè)對(duì)這些方法進(jìn)行測(cè)試,所以還要編寫(xiě)測(cè)試用例书蚪。編寫(xiě)這個(gè)例題主要意義是練習(xí)和進(jìn)一步熟悉JDBC對(duì)數(shù)據(jù)庫(kù)表格進(jìn)行增喇澡、刪、查殊校、改操作的方式晴玖,鞏固JDBC這個(gè)知識(shí)點(diǎn)。
這個(gè)例題里要用到的技術(shù)有:Maven为流、DBUnit呕屎、C3P0連接池、Log4j敬察、MySQL數(shù)據(jù)庫(kù)秀睛。
1.先準(zhǔn)備一個(gè)干凈的數(shù)據(jù)庫(kù)和兩個(gè)表格,并且給這兩個(gè)表格構(gòu)建關(guān)聯(lián)關(guān)系:
2.創(chuàng)建Maven工程莲祸,并配置好所有的依賴(lài)包:
配置好依賴(lài)包:
3.在源碼文件夾和測(cè)試源碼文件夾里創(chuàng)建好相應(yīng)的包(package)蹂安,以便分類(lèi),免得所有類(lèi)都擠在一起顯得亂糟糟的:
源碼文件夾下的包:
c3p0manager 這個(gè)包是用來(lái)放連接對(duì)象管理類(lèi)的
org.zero01.iuds 這個(gè)包是用來(lái)放封裝類(lèi)和功能類(lèi)的
exception 這個(gè)包是用來(lái)放自定義異常類(lèi)的
測(cè)試源碼文件夾下的包:
org.zero01.test 這個(gè)包是用來(lái)放測(cè)試用例類(lèi)的
4.在c3p0manager 包下創(chuàng)建一個(gè)類(lèi)锐帜,這個(gè)類(lèi)用于通過(guò)C3P0連接池獲得數(shù)據(jù)庫(kù)連接對(duì)象田盈,并且這個(gè)類(lèi)是單例模式:
代碼示例:
5.編寫(xiě)兩個(gè)表格的數(shù)據(jù)封裝類(lèi):
Cls代碼示例:
Student代碼示例:
6.編寫(xiě)對(duì)Cls表格操作的功能類(lèi):
7.編寫(xiě)對(duì)Student表格操作的功能類(lèi):
8.在測(cè)試源碼文件夾下的org.zero01.test包里編寫(xiě)測(cè)試類(lèi),對(duì)兩個(gè)功能類(lèi)的方法逐個(gè)進(jìn)行測(cè)試:
測(cè)試結(jié)果:
測(cè)試覆蓋率:
日志信息的打咏裳帧:
提示:我這是已經(jīng)完成的代碼允瞧,但是各位在實(shí)際編寫(xiě)代碼的時(shí)候,最好是寫(xiě)一個(gè)方法就測(cè)試一下,不要全部功能代碼寫(xiě)完再寫(xiě)測(cè)試用例測(cè)試瓷式,因?yàn)槟菢右坏┏鰡?wèn)題了替饿,很多地方的代碼都要進(jìn)行修改,如果寫(xiě)一個(gè)方法就測(cè)一個(gè)方法的話贸典,就只需要針對(duì)一個(gè)方法進(jìn)行修改视卢,而其他方法不需要變動(dòng),這樣效率高一些并且修改代碼也輕松些廊驼,不用到處修修改改弄得眼花繚亂据过。
我在編寫(xiě)C3P0Manager類(lèi)的時(shí)候,犯了一個(gè)邏輯上的小錯(cuò)誤妒挎,在這里記錄一下這個(gè)錯(cuò)誤绳锅,出現(xiàn)這個(gè)錯(cuò)誤是因?yàn)槲野褬?gòu)建對(duì)象的屬性聲明在了C3P0數(shù)據(jù)源類(lèi)變量的前面,在構(gòu)造器外調(diào)用getConnection方法的時(shí)候就會(huì)拋出空指針異常:
圖解:
正確的聲明方式: