我有一个单元测试,可以打开自定义对话框并输入一些文本。这有效,但我无法接受对话框或取消确定按钮。请任何人都可以告诉我如何使用junit自动化对话接受。
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_DPAD_DOWN);
instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);
问题是现在我无法判断对话框何时被解除并返回到父Activity以继续测试
instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
现在也可以解决这个问题:
instrumentation.waitForIdleSync();
instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
看起来有点笨拙,这是你应该如何使用这些工具吗?
答案 0 :(得分:0)
我遇到了同样的问题。它看起来像是你必须创建一个自定义对话框。这将允许您使用findViewById()检索添加的按钮。这是我发现的一个链接,可能会让你走上正确的道路。
http://www.mkyong.com/android/android-custom-dialog-example/