我正在學習敏捷實踐課程,並且我有作業。他們教我的是,在更改代碼(重構或添加功能)之前,我應該添加一些測試,以獲得信心並確保在重構時不會改變行爲。這很清楚並且合理,但如果代碼不是首先進行一些重構就不可測試的呢?測試遺留代碼
簡單的例子:
public class Summation
{
private int addend1;
private int addend2;
public Summation(int addend1, int addend2)
{
this.addend1 = addend1;
this.addend2 = addend2;
}
public int doSum()
{
System.out.println(addend1 + addend2);
}
// Getters/setters
}
我想用FIT運行驗收/集成測試,並檢查下表驗證:
----------------------------
| addend1 | addend2 | result |
----------------------------
| 1 | 1 | 2 |
----------------------------
| 1 | -1 | 0 |
----------------------------
| -1 | 1 | 0 |
----------------------------
| -1 | -1 | -2 |
----------------------------
但是,由於功能doSum()
打印對標準輸出流的總和,很難爲它寫一個測試(我寧願避免截取標準輸出)。稍微重構代碼以獲得返回總和的方法會更有意義。但是因爲在寫任何測試之前我在技術上「不允許」更改代碼,所以不建議這樣做。
你能給我任何提示嗎?你將如何繼續?
謝謝!