Тестирование пользовательского интерфейса Android с Espresso на внутренних представлениях AlertDialog

Я тестирую щелчок на внутреннем ListView AlertDialog, используя Espresso, но продолжаю получать NoMatchingViewException. Диалог имеет ListView, который читает учетные записи на устройстве.

 AlertDialog.Builder builder = new AlertDialog.Builder(activity_reference);
    builder.setTitle(R.string.main_dialog_title);
    ListView lv = new ListView(activity_reference);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>
            (activity_reference, android.R.layout.simple_list_item_1, android.R.id.text1,
                    gUsernameList);
    lv.setAdapter(adapter);
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
              Toast.makeText(activity_reference, "You selected :" + gUsernameList.get(position), Toast.LENGTH_LONG).show();
              account_selected = gUsernameList.get(position);
        }
      }
    );

    builder.setView(lv);
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener()
            {
                public void onClick(DialogInterface dialog, int whichButton) {
                    if (account_selected == null) {
                        return;
                    }
                    dialog.dismiss();
                    Intent myIntent = new Intent(activity_reference, GraphActivity.class);
                    myIntent.putExtra("account_selected", account_selected); //Optional parameters
                    activity_reference.startActivity(myIntent);
                }
            }
    );
    final Dialog dialog = builder.create();
    dialog.show();

И в тесте

onView(withText(R.string.test_account)).inRoot(isDialog()).check(matches(isDisplayed()));

Я делаю что-то не так? Заранее спасибо

Редактировать: я пытался использовать UIAutomator тоже, но получает UIObjectNotFoundException, хотя это явно там, в uiautomatorviewer.

1 ответ

Решение

Кажется, я просто пропустил коды инициации.

mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
    activityTestRule.getActivity();

Извините за ложную тревогу.

Другие вопросы по тегам