我正在学习敏捷实践课程,并且我有作业。他们教我的是,在更改代码(重构或添加功能)之前,我应该添加一些测试,以获得信心并确保在重构时不会改变行为。这很清楚并且合理,但如果代码不是首先进行一些重构就不可测试的呢?测试遗留代码
简单的例子:
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()
打印对标准输出流的总和,很难为它写一个测试(我宁愿避免截取标准输出)。稍微重构代码以获得返回总和的方法会更有意义。但是因为在写任何测试之前我在技术上“不允许”更改代码,所以不建议这样做。
你能给我任何提示吗?你将如何继续?
谢谢!