我來到了十字路口。我最近寫了一個沒有TDD的10,000行應用程序(我知道一個錯誤)。我肯定遇到了很多錯誤,但現在我想改造這個項目。這是我碰到的問題。讓我們,做除法函數的例子:TDD如何處理異常和參數驗證?
public int divide (int var1, int var2){
if (var1 == 0 || var2 == 0)
throw new RuntimeException("One of the parameters is zero");
return var1/var2;
}
在這種情況下,我拋出一個運行時錯誤,這樣我可以失敗,並至少找到我的代碼被打破了地方。問題是2倍。首先,我在這裏正確使用例外情況嗎?其次,我如何編寫一個測試來處理這個異常?很顯然,我希望它能通過測試,但在這種情況下,它會拋出異常。 不太確定如何解決這個問題。 TDD通常使用不同的方式處理這種情況嗎?
感謝
拋出:IllegalArgumentException(或等價的,如果不是Java)應當被用來代替普通的RuntimeException。 – 2009-11-21 18:14:54
您不能將TDD改裝爲現有的代碼。您可以針對現有代碼編寫單元測試,但那不是TDD。 TDD是一個**設計**過程,您可以先寫**測試**。我會建議爲現有代碼的關鍵公共接口編寫單元測試,並在添加新的類或方法時考慮使用TDD。 – TrueWill 2009-11-21 18:33:45