繁体   English   中英

Android Junit测试本地最终变量

[英]Android Junit test local final variables

我的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设置为Activity的局部变量,而不是像这样的匿名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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM