Android Junit测试局部最终变量
我在MyClass.java中有以下代码: 变量“C”是添加的变量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”并
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测试,没有办法更改源代码。无论如何,谢谢你。