Android 如何在单元测试中接受对话框?
我有一个单元测试,它打开一个自定义对话框并输入一些文本。这是可行的,但我无法接受该对话框或获得“确定”按钮。请告诉我如何使用junit自动接受对话框Android 如何在单元测试中接受对话框?,android,testing,Android,Testing,我有一个单元测试,它打开一个自定义对话框并输入一些文本。这是可行的,但我无法接受该对话框或获得“确定”按钮。请告诉我如何使用junit自动接受对话框 ActivityMonitor activityMonitor = instrumentation.addMonitor( EditItem.class.getName(), null, false); instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_M
ActivityMonitor activityMonitor = instrumentation.addMonitor(
EditItem.class.getName(), null, false);
instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);
instrumentation.invokeContextMenuAction(gridList, R.id.add, 0);
Activity activity = instrumentation.waitForMonitorWithTimeout(
activityMonitor, 10);
assertNotNull("Make sure the edit item activity was called", activity);
assertEquals("Make sure the edit item activity was called",
EditItem.class, activity.getClass());
final TextView nameView = (TextView) activity.findViewById(R.id.name);
// this opens the dialog
TouchUtils.clickView(this, nameView);
// this adds some text
for (int i = 0; i < 3; i++)
{
instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_X);
}
// here I would like to accept the ok button on the dialog
现在的问题是,我无法判断对话框何时结束被取消并返回到父活动以继续测试
instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
现在也要为此做些工作:
instrumentation.waitForIdleSync();
instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
看起来有点笨重,你应该这样使用这些工具吗?我也有同样的问题。看起来您必须创建一个自定义对话框。这将允许您检索使用findViewById()添加的按钮。这是我发现的一个链接,它可能会让你走上正确的道路
我想知道您是否找到了解决问题的好方法(基本上是在ActivityInstrumentationTestCase2中找到一个对话框对象),因为我面临着同样的问题:)
instrumentation.waitForIdleSync();
instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);