Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在单元测试中接受对话框?_Android_Testing - Fatal编程技术网

Android 如何在单元测试中接受对话框?

Android 如何在单元测试中接受对话框?,android,testing,Android,Testing,我有一个单元测试,它打开一个自定义对话框并输入一些文本。这是可行的,但我无法接受该对话框或获得“确定”按钮。请告诉我如何使用junit自动接受对话框 ActivityMonitor activityMonitor = instrumentation.addMonitor( EditItem.class.getName(), null, false); instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_M

我有一个单元测试,它打开一个自定义对话框并输入一些文本。这是可行的,但我无法接受该对话框或获得“确定”按钮。请告诉我如何使用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_BACK);
现在也要为此做些工作:

            instrumentation.waitForIdleSync();
    instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);

看起来有点笨重,你应该这样使用这些工具吗?

我也有同样的问题。看起来您必须创建一个自定义对话框。这将允许您检索使用findViewById()添加的按钮。这是我发现的一个链接,它可能会让你走上正确的道路


我想知道您是否找到了解决问题的好方法(基本上是在ActivityInstrumentationTestCase2中找到一个对话框对象),因为我面临着同样的问题:)
            instrumentation.waitForIdleSync();
    instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);