l JUnit非常簡單
撰寫測試應(yīng)該很簡單--這是重點!如果撰寫測試太復雜或太耗時間,便無法要求程序設(shè)計師撰寫測試。使用JUnit你可以快速的撰寫測試并檢測你的程序代碼并逐 步隨著程序代碼的成長增加測試。只要你寫了一些測試,你想要快速并頻繁的執(zhí)行測試而不至于中斷建立設(shè)計及開發(fā)程序。使用JUnit執(zhí)行測試像編譯你的程序代碼那么容易。事實上,你應(yīng)該執(zhí)行編譯時也執(zhí)行測試。編譯是檢測程序代碼的語法而測試是檢查程序代碼的完整性(integrity)。
l JUnit測試檢驗其結(jié)果并提供立即的回饋。
如果你是以人工比對測試的期望與實際結(jié)果那么測試是很不好玩的,而且讓你的速度慢下來。JUnit測試可以自動執(zhí)行并且檢查他們自己的結(jié)果。當你執(zhí)行測試,你獲得簡單且立即的回饋; 比如測試是通過或失敗。而不再需要人工檢查測試結(jié)果的報告。
l JUnit測試可以合成一個測試系列的層級架構(gòu)。
JUnit可以把測試組織成測試系列;這個測試系列可以包含其它的測試或測試系列。JUnit測試的合成行為允許你組合多個測試并自動的回歸(regression)從頭到尾測試整個測試系列。你也可以執(zhí)行測試系列層級架構(gòu)中任何一層的測試。
l 撰寫JUnit測試所費不多。
使用Junit測試框架,你可以很便宜的撰寫測試并享受由測試框架所提供的信心。撰寫一個測試像寫一個方法一樣簡單;測試是檢驗要測試的程序代碼并定義期望的結(jié)果。這個測試框架提供自動執(zhí)行測試的背景;這個背景并成為其它測試集合的一部份。在測試少量的投資將持續(xù)讓你從時間及品質(zhì)中獲得回收。
l JUnit測試提升軟件的穩(wěn)定性。
你寫的測試愈少;你的程序代碼變的愈不穩(wěn)定。測試使得軟件穩(wěn)定并逐步累積信心;因為任何變動不會造成漣漪效應(yīng)而漫及整個軟件。測試可以形成軟件的完整結(jié)構(gòu)的膠結(jié)。
l JUnit測試是開發(fā)者測試。
JUnit測試是高度區(qū)域性(localized)測試;用以改善開發(fā)者的生產(chǎn)力及程序代碼品質(zhì)。不像功能測試(function test)視系統(tǒng)為一個黑箱以確認軟件整體的工作性為主,單元測試是由內(nèi)而外測試系統(tǒng)基礎(chǔ)的建構(gòu)區(qū)塊。開發(fā)者撰寫并擁有JUnit測試。每當一個開發(fā)反復(iteration)完成,這個測試便包裹成為交付軟件的一部份 提供一種溝通的方式,「這是我交付的軟件并且是通過測試的!
l JUnit測試是以Java寫成的。
使用Java測試Java軟件形成一個介于測試及程序代碼間的無縫(seamless)邊界。在測試的控制下測試變成整個軟件的擴充同時程序代碼可以被重整。Java編譯器的單元測試靜態(tài)語法檢查可已幫助測試程序并且確認遵守軟件接口的約定。
一段測試的程序代碼無法單獨的執(zhí)行,它需要是執(zhí)行環(huán)境的一部份。同時,它需要自動執(zhí)行的單元測試--譬如在系統(tǒng)中周期性的執(zhí)行所有的測試以證明沒有任何東西被破壞。由于單元測試需要符合特定的準則:一個成功的測試不應(yīng)該是人工檢查的(那可要到天荒地老了啊),一個未通過測試的失敗應(yīng)可以產(chǎn)出文件以供診斷修改。而Junit可以提供給我們這些便利.。這樣所有測試開發(fā)者所需撰寫的只是測試碼本身了。跟optimizeit、Jtest那些昂貴而又超級麻煩的tool比較起來,其利昭然可見!