Тестирование пользовательского интерфейса 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();
Извините за ложную тревогу.