在我的Activity中,我有一个带有已注册ContextMenu的GridView。现在我想测试这个Activity,因此我在GridView的第一个子节点上说performLongClick()
并打开上下文菜单。现在我想按下此菜单中的第一个条目,是否可以这样做?
public class TestClass extends extends ActivityInstrumentationTestCase2<MainActivity> {
public void testMe() {
final GridView gv = getActivity().findViewById(R.id.some_id);
getActivity().runOnUiThread(new Runnable() {
public void run() {
gv.getChildAt(0).performLongClick();
}
});
getInstrumenttation().waitForIdleSync();
//Registered Context Menu opens
//????some method to get contextMenu and press first item
//getActivity().getContextMenu().performClick(0); <---
}
}
答案 0 :(得分:3)
好的,我通过在MainActivity中覆盖'onCreateContextMenu(ContextMenu菜单,View v,ContextMenuInfo信息)'并将菜单设置为全局变量来解决我的问题。之后,我可以在我的测试类中检索ContextMenu并执行单击:
public void testDelete() {
performLongClick(gv.getChildAt(1));
final ContextMenu contextMenu = getActivity().getContextMenu();
assertTrue(contextMenu != null);
getActivity().runOnUiThread(new Runnable() {
public void run() {
contextMenu.performIdentifierAction(R.id.menuItemId, 0);
}
});
getInstrumentation().waitForIdleSync();
}