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