2012-02-27 2 views
2

私はアジャイルプラクティスのコースに従っており、私には宿題があります。彼らが私に教えたのは、コードを変更する前に(リファクタリングや機能の追加)、リファクタリング中に動作を変更しないようにするために、テストを追加する必要があります。これははっきりしていて理にかなっていますが、最初にリファクタリングをしなくてもコードがテスト可能でない場合はどうなりますか?レガシーコードのテスト

簡単な例:

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()プリント理由(標準出力を傍受することは避けることをお勧めします)。和を返すメソッドを持たせるには、コードを少しリファクタリングするほうが意味があります。しかし、テストを書く前にコードを変更することは技術的に「許可されていません」ので、これはお勧めできません。

私に何かヒントはありますか?どのように進めますか?

ありがとうございました!

答えて

2

this questionと同様のサウンドです。

コードを変更できるかどうかにかかわらず、標準出力ストリームを傍受することが強制されます。いずれにせよ、それは行動の一部です。

1

テーブルのxとyのさまざまな値を指定してSummation.Summation(x、y)を呼び出し、結果を確認/記録するtest.cppファイルを作成できます。結果が期待どおりであることを確認してください。次に、Summationクラスを編集して、test.cppから再度テストを実行して、値が最初と同じであることを確認します。

関連する問題