Я настроил calabash-android, который отлично работает со сценарием по умолчанию (используя cucumber
для запуска тестов или calabash-android console
для входа в режим REPL).
Однако в некоторых сценариях оказывается весьма полезным иметь возможность подключиться к уже работающему приложению. Например, я бы запускал приложение в режиме отладки и запускал тесты, чтобы иметь возможность устанавливать точки останова и проверять, почему определенные функции не работают должным образом в моих сценариях.
Когда дело доходит до Calabash на iOS, эта задача очень проста: дополнительная подготовка не требуется, поскольку приложение запускается с тестовым сервером, и я могу подключить к нему Calabash в любое время. Тем не менее, Calabash Android, похоже, принудительно закрывает приложение каждый раз, когда я пытаюсь запустить Calabash с запущенным приложением.
Есть ли способ обойти это?
EDIT Похоже, что приведенные ниже ответы не очень помогли, но я все еще надеюсь, что кто-нибудь (разработчики калебаса, где вы?) однажды наткнется на это. Я потратил некоторое время на то, чтобы сам обнаружить проблему, и вот в чем конкретная проблема:
- Запустите приложение в режиме отладки (например, с помощью Xamarin).
- Начать
calabash-android console PATH_TO_APK
- Пробуйте вводить любые команды (например,
query("*")
) — не получается с сообщением KeepAliveDisconnected - Попробуйте запустить start_test_server_in_background — приложение будет убито, а сеанс отладки прерван.
Углубившись в детали, я обнаружил, что start_test_server_in_background на самом деле запускает shell am instrument
, где sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner
является инструментальным бэкендом, а также набором других флагов, описывающих, какое приложение использовать, какой порт использовать и т. д.
Таким образом, следующее может очень помочь: может ли инструмент shell am подключиться к работающему приложению?