2013-03-20 12 views
-2

您可以爲下面的枚舉類編寫多少個測試。我在尋找下面的O/P。針對以下的TDD方法

給出以下命令

java fileName HORIZON_BOX, HORIZON_BOX_WITH_CC,HORIZON_BOX_WITH_CC 

1 HORIZON_BOX: 20.00 
2 HORIZON_BOX_WITH_CC @ 30.00 : 60.00 
GRAND TOTAL : 80.00 

什麼是最好的解決辦法,你會去解決這個問題?

public enum Product { 

    HORIZON_BOX(30.00), 
    HORIZON_BOX_WITH_CC(50.00), 
    HORIZON_BOX_WITH_CC_2_TB(100.00), 
    HORIZON_MULTIROOM(75.00), 
    HUB(20.00); 

    private double price; 

    private Product(double price) { 
     this.price = price; 
    } 

    public double getPrice() { 
     return price; 
    } 

} 
+0

你到目前爲止嘗試過什麼?看起來像一個家庭作業,你期待一個完整的答案,而沒有嘗試過任何東西:) – 2013-03-20 14:01:19

+0

我寫了所有的代碼。我只想讓自己更好,並希望得到建議。由於我是新的論壇,我不知道我可以在哪裏顯示我所做的所有代碼。 – Angelo 2013-03-20 15:11:23

+0

或者將它粘貼到你的問題中,如果它太長,你可以創建一個[gist](https://gist.github.com)並將其鏈接到這裏。 – 2013-03-20 15:12:55

回答

2

我認爲唯一對這個枚舉有意義的測試是創建每個值的實例並檢查getPrice()方法是否返回預期價格。

關於你用enum做的算術:這是一個不同的問題,如果沒有看到你的實際來源來做這件事和你的要求,這是不能回答的。設計單元測試時的通常思維過程如下:

  • 根據我的規範,什麼是正常用例?
  • 什麼是罕見的邊緣情況可能是棘手的處理或需要特殊的邏輯(如最小或最大允許值)?
  • 規範之外的哪些用例會導致錯誤?
  • 是否測試了所有可能的代碼路徑?

順便說一句:你不應該用double來表示貨幣值。您應該使用BigDecimal,因爲它允許您指定小數位數和舍入策略。正常的雙重算術不遵循金融交易中習慣的舍入規則。詳細信息請參見this question

+0

我測試了所有的枚舉和getPrice方法。我還使用了一個HashMap和開關結構來獲得預期的輸出。我想發佈我的代碼並獲得一些坦率的反饋 – Angelo 2013-03-20 15:13:06

+0

你可以在http://codereview.stackexchange.com/上做到這一點 – Philipp 2013-03-20 15:14:08

+0

非常感謝菲利普。這是什麼網站?只是答案或我可以在這裏更小的代碼。我在這裏發佈了我的問題。 http://codereview.stackexchange.com/questions/24161/tdd-approach-and-simple-solution – Angelo 2013-03-20 15:23:14