notyy的junit教程
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/1/7 15:37:57 ] 推薦標(biāo)簽:
先寫test
public void testDiscount(){
AccountA=new Account("notyy",100);
AccountB=new Account("bricks",200);
AccountA.discount(50);
//100-50=50
assertEquals(50.00,AccountA.getBalance(),2);
AccountB.discount(120);
//200-120=80
assertEquals(80,AccountB.getBalance(),2);
}
然后實(shí)現(xiàn)
public void discount(double aMoney){
Balance-=aMoney;
}
后是轉(zhuǎn)帳功能,轉(zhuǎn)帳是從一個(gè)帳戶轉(zhuǎn)到另一個(gè)帳戶。其實(shí)是調(diào)用一個(gè)帳戶的增加功能和另一個(gè)帳戶的減少功能。
每個(gè)測(cè)試?yán)锒家ccountA和accountB是不是很煩,junit考慮到了這一點(diǎn),所以可以覆蓋testcase的setUp方法,在該方法內(nèi)建立一些所有test都要用到的變量等。
public void setUp(){
AccountA=new Account("notyy",100);
AccountB=new Account("bricks",200);
}
這樣,所有的測(cè)試方法中都不用再建立這兩個(gè)實(shí)例了。:)
好,寫轉(zhuǎn)帳方法的測(cè)試
public void testTransfer(){
AccountA.transfer(AccountB,80.00);
//100-80=20
//200+80=280
assertEquals(20.00,AccountA.getBalance(),2);
assertEquals(280.00,AccountB.getBalance(),2);
}
然后建立transfer方法的框架,使它能編譯:
public void transfer(Account aAccount,double aBalance){}
測(cè)試時(shí)報(bào)失敗,expected “20” but was “100”
然后填入實(shí)現(xiàn) :
public void transfer(Account aAccount,double aBalance){
this.discount(aBalance);
aAccount.credit(aBalance);
}
test OK!
簡(jiǎn)單的步驟,卻可使你對(duì)你實(shí)現(xiàn)的方法的正確性確信無(wú)疑,而且寫測(cè)試的過(guò)程也是設(shè)計(jì)的過(guò)程,如果在寫一個(gè)方法前,你連應(yīng)該得到的輸出都想不明白,又怎么能動(dòng)手去寫呢?
誰(shuí)說(shuō)XP只要code,不要設(shè)計(jì)呢? :)
好了,junit單元測(cè)試的第一個(gè)例子寫到這吧。很簡(jiǎn)單吧?