测试遗留代码[关闭]
-
13-11-2019 - |
题
我正在学习敏捷实践课程,并且有作业。他们教我的是,在更改代码(重构或添加功能)之前,我应该添加一些测试,以获得信心并确保我在重构时不会改变行为。这很清楚并且有道理,但是如果代码在不先进行一些重构的情况下就无法测试怎么办?
简单的例子:
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()
将总和打印到标准输出流,很难为其编写测试(我宁愿避免拦截标准输出)。稍微重构代码以获得返回总和的方法会更有意义。但由于我在技术上“不允许”在编写任何测试之前更改代码,因此不建议这样做。
你能给我一些提示吗?你将如何进行?
谢谢你!
解决方案
听起来类似于 这个问题.
无论您是否被允许更改代码,您都必须拦截标准输出流。无论如何,这是行为的一部分。
其他提示
您可以编写一个 test.cpp 文件来使用表中 x 和 y 的各种值调用 Summation.Summation(x,y) 并验证/记录结果。确保结果符合您的预期。接下来,您现在可以编辑 Summation 类并再次运行测试(从 test.cpp)以确保值与最初的值相同。
不隶属于 StackOverflow