私はアジャイル プラクティスのコースを受講しており、宿題があります。彼らが私に教えてくれたのは、コードを変更する(リファクタリングまたは機能を追加する)前に、リファクタリング中に動作を変更しないことを確信し、確実にするために、いくつかのテストを追加する必要があるということです。これは明らかで理にかなっていますが、最初にリファクタリングを行わないとコードをテストできない場合はどうなるでしょうか?
簡単な例:
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()
は合計を標準出力ストリームに出力するため、そのテストを書くのは困難です (私は標準出力をインターセプトすることは避けたいと思っています)。合計を返すメソッドを作成するには、コードを少しリファクタリングする方が理にかなっています。しかし、テストを書く前にコードを変更することは技術的に「許可されていない」ため、これはお勧めできません。
ヒントを教えてください。どのように進めますか?
ありがとうございました!