我的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
我可以获取本地最终变量的实例吗?
非常感谢。
答案 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