Тест Robotium не проходит с: junit.framework.AssertionFailedError: Представление не может быть нажата! - PullRequest
1 голос
/ 12 октября 2010

Я только начал работать с Robotium и попробовал первый очень простой тест, но у меня возникла проблема, которую я не могу объяснить / мне не кажется логичной.

У меня есть TabHost с ActivityGroup икнопка переключения на каждом действии, которое отображается в разделе содержимого вкладки.Когда я нажимаю кнопку переключения, область содержимого вкладки меняется на другое действие (mTabHost.setCurrentTab (намерение);).Каждое действие имеет такую ​​кнопку переключения, всегда с меткой «Переключить».Когда я нажимаю кнопку переключения для секундного действия, оно переключается обратно на первое (все внутри области содержимого вкладки).

|-----------------|
| TabHost |       | 
|-----------------| 
|                 | 
| Toggle-Button   | 
|                 | 
| (ActivityGroup: | 
| Activities      | 
| change in here) |
|                 | 
|-----------------|

Теперь вручную все это работает нормально, но тест robotium не 'т.Когда я пытаюсь нажать кнопку переключения на втором упражнении, я получаю сообщение об ошибке «junit.framework.AssertionFailedError: View не может быть нажата!»

Это мой тест - очень простой и маленький:

    solo.sleep(5000);
    solo.waitForActivity("StartTabsActivity", 10000);

    solo.clickOnButton("Toggle");
    // this will swap the activity inside the tabhost content section

    solo.sleep(5000);
    solo.waitForActivity("StatusListActivity", 5000);

    solo.assertCurrentActivity("Expected StatusList activity", "StatusListActivity");

    LogUtils.logD("robotium: button label: " + solo.getButton(1).getText()); 
    // ... outputs: robotium: button label: Toggle

    LogUtils.logD("robotium: button clickable: " + solo.getButton(1).isClickable()); 
    // ... outputs: robotium: button clickable: true

    solo.clickOnButton("Toggle");   
    // ... throws: junit.framework.AssertionFailedError: View can not be clicked!

Чего я здесь не понимаю: я проверяю, что кнопка с меткой «Переключить» существует и доступна для нажатия, тем не менее, я получаю сообщение об ошибке «Это представление невозможно щелкнуть.».И есть только одна кнопка «Переключить» в соответствующем текущем действии.

В связи с этим вопросом у меня есть еще один незначительный момент: когда я работаю с TabHost + ActivityGroup, всегда будет «solo.getCurrentActivity ()»вернуть встроенную активность ActivityGroup, а не внешнюю?Может ли соло по-прежнему получать доступ к элементам внешней деятельности?В моем случае выше кнопка переключения всегда является частью внутреннего / встроенного действия - в случае, если это имеет значение здесь.

Ответы [ 3 ]

2 голосов
/ 12 октября 2010

Только что получил ответ от robotium dev, что эта проблема будет исправлена ​​в Robotium 1.8. Смотри Здесь

1 голос
/ 12 февраля 2015

Вы можете использовать это:

solo.clickOnView(solo.getView("Toggle"))

или:

solo.clickOnView(solo.getView(R.id.B))
0 голосов
/ 31 января 2011

Вместо этого вы можете использовать саму JUnit Automation, предоставляемую Android. Вы можете легко отправить KeyEvents, чтобы выбрать пункт меню и завершить задачу.

Все, что вам нужно сделать, это создать метод теста JUnit в коде теста, который выбирает пункт меню. Выполните следующие методы: -

  • Запустить активность в тестовом методе
  • отправка ключевого события в меню. При отображении параметров меню отправьте сообщения о событиях вверх, вниз, влево и вправо, чтобы сфокусироваться на параметре, и отправьте событие с ключом DPAD CENTER.

Надеюсь, это хорошо решит вашу проблему. Но перед этим вы должны знать немного JUnit и тестовый фреймворк, доступный в Android SDK ..

...