0

外側のクラス Outer と内側のクラス Inner があります。パブリック メソッドの outerMethod() をテストするには、Outer で Inner のインスタンスを作成する必要があります。これは、inners というリストに格納されます。内部クラスは、別のクラスである Other の修正バージョンです。

概要へ:

class Other{
    public Other(){
       //doesnt matter actual implementation
    }
}

class Outer{
    private List<Inner> inners = new ArrayList<Inner>();

    public Outer(){}

    public void outerMethod(){}

    private class Inner{
        public Inner(Other other){}
    }
}

私の質問は、テスト目的のためだけに次のようなメソッドを作成する必要があるかどうかです。

public void createInnerInstance(Other other)
{
    Inner inner = new Inner(other);
    inners.add(inner);
}

これに対する他の回避策はありますか?これで、Inner を public にすることができますが、実際に Inner を使用するクラスは Outer だけです。

よろしく

4

1 に答える 1

1

特にテスト目的でコードを変更することは、おそらくあまり良い考えではありません。

@bot がコメントで提案するようにクラスを再設計するか、回避策を適用するかの 2 つのオプションがあります。

フィールド/内部クラスのアクセス修飾子を変更して、代わりにテストから使用できます。実装の詳細については、こちらこちらをご覧ください。

于 2012-09-29T05:34:00.437 に答える