Подтвердить что ты не робот

Диалоговое окно тестирования в Android ActivityUnitTestCase

Я пытаюсь протестировать Activity в android, который покажет ProgressDialog, и все работает отлично в приложении, однако, когда я пытаюсь использовать ActivityUnitTestCase, и тест заставляет Activity показывать диалоговое окно с ошибкой:

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
at android.view.ViewRoot.setView(ViewRoot.java:429)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:178)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
at android.view.Window$LocalWindowManager.addView(Window.java:392)

Я рассматривал проблему, и кажется, что метод onCreateDialog моей активности падает, когда мы пытаемся создать его из теста, который, как я предполагаю, является другим контекстом, я получаю это, однако я удивляюсь, что любой из вас был успешный при попытке такого сценария.

Это код моего onCreateDialog.

    public Dialog onCreateDialog(final int id)
{
    Dialog dialog;
    switch (id)
    {
        case PROGRESS_BAR:
            loadingDialog = new ProgressDialog(this);
            loadingDialog.setMessage("searching for product...");
            loadingDialog.setIndeterminate(true);
            dialog = loadingDialog;
            break;
        case INEXISTING_PRODUCT:
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("Product not found");
            builder.setPositiveButton("OK", null);
            dialog = builder.create();
            break;
        case UNAVAILABLE_SERVICE:
            AlertDialog.Builder unavailableBuilder = new AlertDialog.Builder(this);
            unavailableBuilder.setMessage("Service Unavailable");
            unavailableBuilder.setPositiveButton("OK", null);
            dialog = unavailableBuilder.create();
            break;
        default:
            dialog = super.onCreateDialog(id);
    }
    return dialog;
}

Любые идеи?

4b9b3361

Ответ 1

Я нахожу способ сделать это, я считаю.

Проблема заключалась в том, что мне нужно было перейти от ActivityInstrumentationTestCase2, а также сделать это, чтобы избежать проблем с потоком GUI.

  final Button uButton = (Button) activity.findViewById(R.id.btnSearchProduct);
    activity.runOnUiThread(new Runnable()
    {
        public void run()
        {
            uButton.performClick();
        }
    });

Мой вопрос только в том, как проверить результаты, так как мне нужно проверить, в какой активности я приземлился, и что он добавляет?