1

私はその中にプライベートクラスを持つパブリッククラスを持っています:

public class Out
{
    private class In
    {
        public String afterLogic;

        public In(String parameter)
        {
            this.afterLogic = parameter+"!";
        }
    }
}

そして、jMockit を使用して In クラスをテストしたいと考えていました。これらの行に沿ったもの:

@Test
public void OutInTest()
{
    Out outer = new Out();
    Object ob = Deencapsulation.newInnerInstance("In", outer); //LINE X
 }

問題は、LINE X で ob を In にキャストしようとすると、In クラスが認識されないことです。

これを解決する方法はありますか?

ありがとう!

4

4 に答える 4

2

クラス内の唯一のコンストラクターは引数Inを取りStringます。したがって、引数値を渡す必要があります。

Object ob = Deencapsulation.newInnerInstance("In", outer, "test");
于 2012-06-04T18:54:35.113 に答える
0

内部クラスのスコープをデフォルトに変更してから、テストが同じパッケージにあることを確認してください。

于 2012-06-04T18:53:20.997 に答える
0

コメントで示唆されているように、1 つの方法は、内部クラスのアクセス修飾子をプライベートからパブリックに変更することです。2 番目の方法 (内部クラスを public にしたくない場合) では、内部クラス メソッドを実際に呼び出している外部クラスの public メソッドをテストできます。

于 2012-06-04T18:52:17.220 に答える
0

2 つのアプローチがあります。1 つ目は、他の投稿で言及されているように、スコープをパブリックに変更することです。私がサポートする 2 つ目は、プライベート クラスのテストを完全に回避することです。テストは、デフォルトの動作に対してではなく、テスト可能なコードまたはクラスのメソッドに対して作成する必要があるためです。

于 2012-06-04T19:02:57.113 に答える