Доступ к AlertDialog в AndroidTestCase - PullRequest
3 голосов
/ 21 февраля 2010

Я использую ActivityInstrumentationTestCase2 для автоматического тестирования черного ящика на моем графическом интерфейсе. Можно ли щелкнуть диалоговое окно или получить представления, относящиеся к диалогу, в модульных тестах?

Единственный способ, которым я мог бы придумать, - это сохранить ссылку на диалоговое окно и сделать так, чтобы в моем Activity был реализован метод получения, позволяющий тестовым кейсам получать доступ к диалогу. Есть ли лучший способ, который не требует изменения моего производственного кода?

1 Ответ

4 голосов
/ 01 декабря 2010

Да, есть лучший способ показать AlertDialogs вашему коду автоматизации, но вам придется сделать это в рабочем коде. Это будет стоить того, потому что это сделает вашу жизнь намного проще. Позволь мне объяснить.

Вы можете назначить свои AlertDialogs объекту WeakHashMap и очень легко получить их. Вот как -

//Definition for WeakHashMap Object
WeakHashMap< Integer, Dialog > managedDialogs = new WeakHashMap< Integer, Dialog  >();

//Some alertdialog builder that needs to be exposed
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(YourActivity.this);
switch(id)
    {
case DIALOG:
    alertDialogBuilder.setTitle("some title")
    .setMessage("some message")
    .setPositiveButton("button text", Onclick activity)         
    .setNeutralButton("button text", Onclick activity)          
    .setNegativeButton("button text", Onclick activity)         
.setCancelable(true);

    AlertDialog dialog = alertDialogBuilder.create();

    //Assigning the value of this dialog to the Managed WeakHashMap
    managedDialogs.put(DIALOG, dialog);
    return dialog;
    }

Теперь в вашей тестовой среде, когда вы ожидаете появления диалогового окна, просто выполните -

AlertDialog dialog = (AlertDialog) activity.managedDialogs.get(YourActivity.DIALOG);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...