2013-03-06 173 views
0

作爲練習,我需要學習編寫以下類的測試:JUnit類的測試資源

package bankAccount;

public class CurrentAccount { 

     int account[]; 
     int lastMove; 

     CurrentAccount() { 
      lastMove = 0; 
      account = new int[10]; 
     } 

     public void deposit(int value) { 
      account[lastMove] = value; 
      lastMove++; 
     } 

     public void draw(int value) { 
      account[lastMove] = value; 
      lastMove++; 
     } 

    public int settlement() { 
      int result = 0; 
      for (int i=0; i<account.length; i++) { 
        result = result + account[i]; 
       } 
       return result; 
     } 


     public static void main(String args[]) { 
       CurrentAccount c = new CurrentAccount(); 
        c.deposit(10); 
     } 
    } 

我是比較新的單元測試,以及大量的教程簡單地介紹如何做簡單的數學運算測試(例如加,減等)。任何人都可以推薦更好的資源來完成更復雜功能的單元測試嗎?我是不是最好關閉使用

http://junit.sourceforge.net/javadoc/org/junit/Assert.html

,並從那裏工作?

回答

1

您應該根據對象的規格進行測試,例如

  1. 什麼是起始平衡?
  2. 我加了10英鎊後餘額是多少?
  3. 我可以去透支嗎?

等所有上面應該寫類之前指定的(否則,你怎麼知道該寫什麼?)

我想創建一個測試方法,每一種方案,執行安裝程序和行動,然後使用一個(或更多,如有必要)asserts確定一切正常。不要忘記,在某些情況下,您可能正在測試引發異常,因此您需要檢查控制流程中的中斷。那不會使用assert

這裏是一個可能的例子(進口等略)

public void testBalanceAfterTenPoundDeposit() { 
    // note the interface/impl separation so I can test different 
    // implementations with the same interface (this is Test By Contract) 
    CurrentAccount ca = new CurrentAccountImpl(); 

    // check the starting balance 
    Assert.assertEquals(ca.settlement(), 0); 

    // deposit 
    ca.deposit(10); 

    // do I have £10 ? 
    Assert.assertEquals(ca.settlement(), 10); 
} 

要注意,這類測試應該被關注的黑盒組件(單元)上是很重要的。也就是說,測試對於實現應該是不可知的,你不會明確地測試數組的實現。我應該能夠插入我自己的實現(或重寫你的)並且測試應該保持工作(這是迴歸測試的原理)。

說了這麼多,如果你知道的(例如,您的固定大小的陣列)的實施明顯的侷限性,你應該嘗試,並強調(例如,在這種情況下,執行11個刀片)

+0

確定。推測起初的平衡會被列爲浮動?代碼在哪裏?在開始時它會是正確的嗎?隨着超支,我最好是讓它做一個System.out.println,當整體平衡低於0時顯示一條錯誤信息? – 2013-03-06 10:43:07

+0

這些都是設計問題,而不是測試問題。我注意到您正在存儲交易,並通過結算()方法得出餘額,所以您沒有*有一個起始餘額,而不是結算()方法中的初始值。如果你透支,你會怎麼做?這是一個規範問題。你可以拋出一個異常。或發出警報。或者只是接受它,並擁有另一個具有-ve餘額的進程監視器帳戶。 – 2013-03-06 10:48:06

+0

非常感謝。你能寫出一個關於如何測試一個數組的樣本測試(例如解決方案之一),以幫助我進行頭部陣列測試? – 2013-03-06 10:48:50