Android Junit测试本地最终变量

时间:2012-09-19 05:43:36

标签: 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”并进行比较。

    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

我可以获取本地最终变量的实例吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

你不能像@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