4

プライベート変数を変更するプライベート メソッドをどのようにモックしますか?

class SomeClass{
    private int one;
    private int second;

    public SomeClass(){}

    public int calculateSomething(){
        complexInitialization();
        return this.one + this.second;
    }

    private void complexInitialization(){
        one = ...
        second = ...
    }
}
4

3 に答える 3

8

テストは、テストしているクラスの実装の詳細に依存するため、脆弱になるため、そうしません。現在テストしているクラスがこの計算を行うために別のオブジェクトに依存するように、コードをリファクタリングできます。次に、テスト対象のクラスのこの依存関係をモックできます。または、実装の詳細をクラス自体に任せ、観察可能な動作を十分にテストします。

あなたが苦しむ可能性のある問題は、コマンドとクエリをクラスに正確に分離していないことです。calculateSomethingよりクエリに似ていますが、complexInitializationよりコマンドです。

于 2013-08-29T07:42:00.863 に答える