我有一个 Android 应用程序,在 Activity 的 onCreate() 方法中,按钮被定义为具有 onClick 方法。在代码中:
public void onCreate(Bundle savedInstanceState) {
/.../
buttonSave = (Button) findViewById(R.id.store_button_save);
buttonSave.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
saveEditor(v);
}
});
/.../
}
我的问题是,如何从 Android 单元测试中调用这个嵌套方法 onCLick()? myActivity.onClick(myButton)
不起作用,因为 onClick() 不是在 Activity 本身中定义的方法。
顺便说一句,我不应该为我的测试更改任何原始源代码。
最佳答案
你可以通过不创建这样一个异常类来测试它。
而是创建一个普通的内部类,并将一个新实例分配给监听器:
public static class MyClickListener implements OnClickListener {
Editor editor;
public MyClickListener(Editor e) {
this editor= e;
}
public void onClick(View v) {
editor.saveEditor(v);
}
}
buttonSave.setOnClickListener(new MyClickListener());
在 JuniTest 中
public void testOnClickListener() {
Editor e = new Editor();
MyClickListener l = new MyClickListener(e);
l.onClick();
// however you check for correct result
assertTrue(checkSaveEditor(e));
}
但为什么不只为方法 saveEditor()
编写 unitest 呢?
这已经足够了,您可以相信 onClick()
可以正常工作。
关于java - 对方法内部声明的方法进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18150868/