您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > junit
notyy的junit教程
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/1/7 15:37:57 ] 推薦標(biāo)簽:

  
  先寫(xiě)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í)例了。:)
  
  好,寫(xiě)轉(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ú)疑,而且寫(xiě)測(cè)試的過(guò)程也是設(shè)計(jì)的過(guò)程,如果在寫(xiě)一個(gè)方法前,你連應(yīng)該得到的輸出都想不明白,又怎么能動(dòng)手去寫(xiě)呢?
  
  誰(shuí)說(shuō)XP只要code,不要設(shè)計(jì)呢? :)
  
  好了,junit單元測(cè)試的第一個(gè)例子寫(xiě)到這吧。很簡(jiǎn)單吧?

上一頁(yè)123下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd