Testing 测试遗留代码

Testing 测试遗留代码,testing,agile,legacy-code,fit-framework,Testing,Agile,Legacy Code,Fit Framework,我正在学习敏捷实践课程,我有一个家庭作业。他们教给我的是,在更改代码(重构或添加功能)之前,我应该添加一些测试,以获得信心并确保重构时不会更改行为。这一点很清楚,也很有意义,但是如果不先进行重构,代码就不可测试怎么办 简单的例子: public class Summation { private int addend1; private int addend2; public Summation(int addend1, int addend2) {

我正在学习敏捷实践课程,我有一个家庭作业。他们教给我的是,在更改代码(重构或添加功能)之前,我应该添加一些测试,以获得信心并确保重构时不会更改行为。这一点很清楚,也很有意义,但是如果不先进行重构,代码就不可测试怎么办

简单的例子:

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文件来调用Summation.Summation(x,y),使用表中x和y的各种值,并验证/记录结果。确保结果符合您的预期。接下来,您可以编辑Summation类并再次运行测试(从test.cpp),以确保值与初始值相同。

听起来类似于

无论您是否被允许更改代码,您都必须拦截标准输出流。无论如何,这是行为的一部分