7

У меня есть приложение. В приложении есть кнопка, которая, при нажатии, выходит из приложения. Я тестирую приложение, используя инструменты UIAutomation. Я хочу проверить эту кнопку. Но после выхода приложения инструмент перестает давать исключение. Что я хочу сделать, так это то, что после того, как приложение существует, я хочу снова открыть приложение и продолжить оставшуюся часть теста. Кто-нибудь еще был в одном и том же сценарии? Если да, можете ли вы, пожалуйста, поделиться решением, если вы его нашли?Как продолжить тестирование приложения iOS, используя инструмент UIAutomation, даже после выхода приложения?

+0

Just FYI - Apple не нравится, когда у вас есть кнопка, которая содержит приложение. Вы строите магазин приложений? – nycynik

+0

Да, это уже на appstore. Его посланник, и есть эта кнопка, которая сбрасывает приложение (он удаляет информацию о регистрации). Как следствие, приложение завершает работу. Так что технически это не кнопка выхода из приложения. –

ответ

3

Это невозможно, потому что инструменты теряет соединение с приложением после его выхода.

Если вы создаете скрипт UI Automation из командной строки, вы можете запустить второй сценарий автоматизации после того, как первый из них покинет приложение, а затем проверит, чтобы все было сброшено.

instruments \ 
    -D [trace document] \ 
    -t [instruments template] \ 
    /path/to/Bundle.app \ 
    -e UIARESULTSPATH [directory to store test output] \ 
    -e UIASCRIPT reset_the_app.js 

instruments \ 
    -D [trace document] \ 
    -t [instruments template] \ 
    /path/to/Bundle.app \ 
    -e UIARESULTSPATH [directory to store test output] \ 
    -e UIASCRIPT check_that_the_app_is_reset.js 

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

+0

Спасибо за ответ. Я думал, что это невозможно сделать, используя UIAutomation. –

0

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

UIATarget.localTarget().deactivateAppForDuration(n); 

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

+0

Деактивация приложения ни в коем случае не является перезапуском. См. Doc, например, https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StrategiesforHandlingAppStateTransitions/StrategiesforHandlingAppStateTransitions.html#//apple_ref/doc/uid/TP40007072-CH8-SW1 для получения дополнительной информации. –

0

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

«Когда пользователь покидает приложение, нажав на кнопку Home или вызывая некоторое другое приложение, чтобы прийти на первый план, ваше приложение приостановлено.»

Значит, его не перезапустить, а приостановить?

+0

Да, его просто приостанавливает приложение для указанного времени в секундах и его не перезапускает. – coder284