Android Junit测试局部最终变量

Android Junit测试局部最终变量,android,junit,Android,Junit,我在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”并

我在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 );
但是来自操作系统的错误:

junit.framework.AssertionFailedError: java.lang.NoSuchFieldExceptio
我可以得到局部最终变量的实例吗


非常感谢。

正如@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

这是不可能的。看,谢谢你,亚姆·马科维奇。有没有办法获取顶级活动线程并从该线程获取值?谢谢。谢谢k3b,但我只负责Junit测试,没有办法更改源代码。无论如何,谢谢你。