2012-06-22 3 views
0

Я пишу тестовые чехлы для приложений Android с помощью Robotium. Один из моих тестовых примеров открывает файл (например, изображение), который вызывает открытие другого действия из другого приложения для отображения изображения.Robotium: возврат к проверенной деятельности

Все это прекрасно. Однако после этого я хочу вернуться к тестируемой работе, так как хочу проверить дальнейшую функциональность.

Как я могу это сделать?

Ни

solo.sendKey(android.view.KeyEvent.KEYCODE_BACK); 

ни

solo.goBack(); 

ни

solo.getCurrentActivity().onBackPressed() 

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

Что-нибудь еще, что я мог попробовать?

+1

Нет, это невозможно, если у вас нет разрешения INJECT_EVENT для других приложений, и приложение подписано с вашим хранилищем ключей, иначе это невозможно. – user370305

ответ

4

Вы принимаете приемочные испытания да, это означает, что пользовательский интерфейс вашей системы работает.

Вам не нужно проверять, что изображение открыто (поскольку оно находится за пределами области приложения).

однако было бы желательно иметь отдельные модульные тесты, которые утверждают, что вы вызываете правильное намерение (или любой фрагмент кода), чтобы открыть это изображение.

Таким образом, у вас есть код, охватываемый тестом и не связанные с тестированием кода других людей.

+1

Фактически я использую модульные тесты в качестве рабочей нагрузки для измерения производительности. Таким образом, я точно хочу открыть изображение по какой-то причине. Я просто хочу знать, можно ли вернуться к моей проверенной деятельности с помощью роботизма. –

+1

@ClaasWilke нет это не – Blundell

1

Я предлагаю вам перезапустить целевую активность, чтобы достичь начального состояния:

..... mSolo.finishOpenedActivities(); setActivity (null); mSolo = новое Solo (mInstrumentation, getActivity()); ....

0

Если вы в состоянии выполнить ADB команды, и вы знаете, какое приложение было начато этим намерением, вы можете сделать:

adb shell am force-stop <package-of-started-app> 

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

Примечание: Это не работает, если для этого намерения есть несколько возможных приложений, и отображается диалоговое окно выбора приложения. В этом случае вы должны установить приложение по умолчанию для этого намерения вручную.

1

Для меня, это делает работу:

mSolo.goBackToActivity("MainActivity"); 

В моем случае я открыть URL в браузере, а затем я вернусь к деятельности в рамках теста. Единственным недостатком (до сих пор) является то, что другое приложение остается в стопке, но, вероятно, есть и исправление для этого.

Я предполагаю, что этот метод был добавлен после того, как этот вопрос был задан.

Смежные вопросы