0

MyClass.java にこのコードがあります。変数「C」が追加されたものです。

btn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
               final MyLocalClass mlc = new MyLocalClass(A, B, C);
          }
}

Junit テストを次のように実行したい: 「mlc」のインスタンスを取得し、「mlc」の「C」を取得して比較します。

    final Activity activity = getActivity();
    Field field = MyClass.class
            .getDeclaredField("mlc");
    field5.setAccessible(true);
    final MyLocalClassinstance = (MyLocalClass) field5
            .get(activity );

しかし、OS からのエラー:

junit.framework.AssertionFailedError: java.lang.NoSuchFieldExceptio

ローカル最終変数のインスタンスを取得できますか?

どうもありがとうございました。

4

1 に答える 1

0

@Yam Marcovicの説明どおりにはできません。

ただし、コードを簡単に変更してテスト可能にすることができます。

このようmlcな匿名の OnClickListener 処理クラスに対してローカルではなく、アクティビティに対してローカルにします

public class MyActivity : Activity {
    public MyLocalClass mlc; 
    public void Init() {
        btn.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                       mlc = new MyLocalClass(A, B, C);
                    }
        }
    }
}

これは簡単にテストできます

MyActivity activity = (MyActivity) getActivity();   
// assert on activity.mlc.C
于 2012-09-19T06:53:18.710 に答える