新聞中心
JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個回歸測試框架(regression testing framework)。Junit測試是程序員測試,即所謂白盒測試,因?yàn)槌绦騿T知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。Junit是一套框架,繼承TestCase類,就可以用Junit進(jìn)行自動測試了。

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括白銀網(wǎng)站建設(shè)、白銀網(wǎng)站制作、白銀網(wǎng)頁制作以及白銀網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,白銀網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到白銀省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
junit特性:
JUnit是一個開放源代碼的Java測試框架,用于編寫和運(yùn)行可重復(fù)的測試。他是用于單元測試框架體系xUnit的一個實(shí)例(用于java語言)。它包括以下特性:
1、用于測試期望結(jié)果的斷言(Assertion)
2、用于共享共同測試數(shù)據(jù)的測試工具
3、用于方便的組織和運(yùn)行測試的測試套件
4、圖形和文本的測試運(yùn)行器
junit優(yōu)點(diǎn):
另外junit是在極限編程和重構(gòu)(refactor)中被極力推薦使用的工具,因?yàn)樵趯?shí)現(xiàn)自動單元測試的情況下可以大大的提高開發(fā)的效率,但是實(shí)際上編寫測試代碼也是需要耗費(fèi)很多的時間和精力的,那么使用這個東東好處到底在哪里呢?筆者認(rèn)為是這樣的:
1、對于極限編程而言
要求在編寫代碼之前先寫測試,這樣可以強(qiáng)制你在寫代碼之前好好的思考代碼(方法)的功能和邏輯,否則編寫的代碼很不穩(wěn)定,那么你需要同時維護(hù)測試代碼和實(shí)際代碼,這個工作量就會大大增加。因此在極限編程中,基本過程是這樣的:構(gòu)思-> 編寫測試代碼-> 編寫代碼-> 測試,而且編寫測試和編寫代碼都是增量式的,寫一點(diǎn)測一點(diǎn),在編寫以后的代碼中如果發(fā)現(xiàn)問題可以較塊的追蹤到問題的原因,減小回歸錯誤的糾錯難度。
2、對于重構(gòu)而言
其好處和極限編程中是類似的,因?yàn)橹貥?gòu)也是要求改一點(diǎn)測一點(diǎn),減少回歸錯誤造成的時間消耗。
3、對于非以上兩種情況
junit我們在開發(fā)的時候使用junit寫一些適當(dāng)?shù)臏y試也是有必要的,因?yàn)橐话阄覀円彩切枰帉憸y試的代碼的,可能原來不是使用的junit,如果使用junit,而且針對接口(方法)編寫測試代碼會減少以后的維護(hù)工作,例如以后對方法內(nèi)部的修改(這個就是相當(dāng)于重構(gòu)的工作了)。另外就是因?yàn)閖unit有斷言功能,如果測試結(jié)果不通過會告訴我們那個測試不通過,為什么,而如果是想以前的一般做法是寫一些測試代碼看其輸出結(jié)果,然后再由自己來判斷結(jié)果使用正確,使用junit的好處就是這個結(jié)果是否正確的判斷是它來完成的,我們只需要看看它告訴我們結(jié)果是否正確就可以了,在一般情況下會大大提高效率。
安裝JUnit:
安裝很簡單,先到以下地址下載一個最新的zip包:
http://www.junit.org JUnit的網(wǎng)站,從該網(wǎng)站可以下載JUnit,并找到相關(guān)資料
下載完以后解壓縮到你喜歡的目錄下,假設(shè)是JUNIT_HOME,然后將JUNIT_HOME下的junit.jar包加到你的系統(tǒng)的CLASSPATH環(huán)境變量中,對于IDE環(huán)境,對于需要用到的junit的項(xiàng)目增加到lib中,其設(shè)置不同的IDE有不同的設(shè)置,這里不多講。
JUnit最佳實(shí)踐:
Martin Fowler說過:“當(dāng)你試圖打印輸出一些信息或調(diào)試一個表達(dá)式時,寫一些測試代碼來替代那些傳統(tǒng)方法?!币婚_始,你會發(fā)現(xiàn)你總是要創(chuàng)建一些新的Fixture,而且測試似乎使你的編程速度慢了下來。然而不久之后,你會發(fā)現(xiàn)你重復(fù)使用相同的Fixture,而且新的測試通常只涉及添加一個新的測試方法。
你可能會寫許多測試代碼,但你很快就會發(fā)現(xiàn)你設(shè)想出的測試只有一小部分是真正有用的。你所需要的測試是那些會失敗的測試,即那些你認(rèn)為不會失敗的測試,或你認(rèn)為應(yīng)該失敗卻成功的測試。
我們前面提到過測試是一個不會中斷的過程。一旦你有了一個測試,你就要一直確保其正常工作,以檢驗(yàn)?zāi)闼尤氲男碌墓ぷ鞔a。不要每隔幾天或最后才運(yùn)行測試,每天你都應(yīng)該運(yùn)行一下測試代碼。這種投資很小,但可以確保你得到可以信賴的工作代碼。你的返工率降低了,你會有更多的時間編寫工作代碼。
不要認(rèn)為壓力大,就不寫測試代碼。相反編寫測試代碼會使你的壓力逐漸減輕,因?yàn)橥ㄟ^編寫測試代碼
,你對類的行為有了確切的認(rèn)識。你會更快地編寫出有效率地工作代碼。
下面是一些具體的編寫測試代碼的技巧或較好的實(shí)踐方法:
1. 不要用TestCase的構(gòu)造函數(shù)初始化Fixture,而要用setUp()和tearDown()方法。
2. 不要依賴或假定測試運(yùn)行的順序,因?yàn)镴Unit利用Vector保存測試方法。所以不同的平臺會按不同的順序從Vector中取出測試方法。
3. 避免編寫有副作用的TestCase。例如:如果隨后的測試依賴于某些特定的交易數(shù)據(jù),就不要提交交易數(shù)據(jù)。簡單的回滾就可以了。
4. 當(dāng)繼承一個測試類時,記得調(diào)用父類的setUp()和tearDown()方法。
5. 將測試代碼和工作代碼放在一起,一邊同步編譯和更新。(使用Ant中有支持junit的task.)
6. 測試類和測試方法應(yīng)該有一致的命名方案。如在工作類名前加上test從而形成測試類名。
7. 確保測試與時間無關(guān),不要依賴使用過期的數(shù)據(jù)進(jìn)行測試。導(dǎo)致在隨后的維護(hù)過程中很難重現(xiàn)測試。
8. 如果你編寫的軟件面向國際市場,編寫測試時要考慮國際化的因素。不要僅用母語的Locale進(jìn)行測試。
9. 盡可能地利用JUnit提供地assert/fail方法以及異常處理的方法,可以使代碼更為簡潔。
10.測試要盡可能地小,執(zhí)行速度快。
11.不要硬性規(guī)定數(shù)據(jù)文件的路徑。
12.利用Junit 的自動異常處理書寫簡潔的測試代碼
事實(shí)上在Junit 中使用try-catch 來捕獲異常是沒有必要的,Junit 會自動捕獲異常。那些沒有被捕獲的異常就被當(dāng)成錯誤處理。
13. 充分利用Junit 的assert/fail 方法
assertSame()用來測試兩個引用是否指向同一個對象
assertEquals()用來測試兩個對象是否相等
14. 確保測試代碼與時間無關(guān)
15. 使用文檔生成器做測試文檔。
JUnit和ant結(jié)合
ant 提供了兩個 target : junit 和 junitreport 運(yùn)行所有 測試用例 ,并生成 html 格式的報表
具體操作如下:
1.將 junit.jar 放在 ANT_HOMElib 目錄下
2.修改 build.xml ,加入如下 內(nèi)容:
-------------- One or more tests failed, check the report for detail... -----------------------------
運(yùn)行 這個 target ,ant 會運(yùn)行每個 TestCase,在 report 目錄下就有了 很多 TEST*.xml 和 一些網(wǎng)頁打開 report 目錄下的 index.html 就可以看到很直觀的測試運(yùn)行報告,一目了然。
在Eclipse中開發(fā)、運(yùn)行JUnit測試相當(dāng)簡單。因?yàn)镋clipse本身集成了JUnit相關(guān)組件,并對JUnit的運(yùn)行提供了無縫的支持。
【編輯推薦】
- 在Eclipse中使用JUnit4進(jìn)行單元測試(3)
- 在Eclipse中使用JUnit4進(jìn)行單元測試(2)
- 在Eclipse中使用JUnit4進(jìn)行單元測試(1)
- Junit 4.6 發(fā)布
- 軟件測試技術(shù)JUnit和單元測試入門簡介
文章題目:JUnit測試框架簡介
轉(zhuǎn)載來源:http://www.fisionsoft.com.cn/article/dppjpgo.html


咨詢
建站咨詢
