测试遗留代码

标签 testing agile legacy-code fit-framework

我正在学习敏捷实践类(class),并且有作业。他们教我的是,在更改代码(重构或添加功能)之前,我应该添加一些测试,以获得信心并确保我在重构时不会改变行为。这很清楚并且有道理,但是如果代码在不先进行一些重构的情况下就无法测试怎么办?

简单的例子:

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()将总和打印到标准输出流,很难为其编写测试(我宁愿避免拦截标准输出)。稍微重构代码以获得返回总和的方法会更有意义。但由于我在技术上“不允许”在编写任何测试之前更改代码,因此不建议这样做。

你能给我一些提示吗?您将如何进行?

谢谢!

最佳答案

听起来类似于 this question .

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

关于测试遗留代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9463099/

相关文章:

testing - 如何设置 TestCafe 以在 CLI 中指定的环境中运行?

java - 为什么通过扩展类来测试类被认为是一种不好的做法?

java - 测试 List<byte[]> 是否相等

agile - 作为开发人员,敏捷真的对你有用吗?

敏捷分支工作流的 Git merge 策略

ruby-on-rails - Rails 遗留代码中一些以 ";1"结尾的行

c - 如何测试遗留 C 代码并检查命中了哪些分支

.net - api测试时如何区分公有方法和私有(private)方法?

JIRA JQL : Issues resolved in the current sprint

c# - 可以删除/替换整个解决方案中的代码