【发布时间】:2015-08-04 16:44:58
【问题描述】:
我已将 calabash-android 设置为在默认场景下完美运行(使用 cucumber 运行测试或使用 calabash-android console 进入 REPL 模式)。
但是,在某些情况下,能够附加到已经运行的应用程序是非常有用的。例如,我会在调试模式下启动一个应用程序并启动测试,以便能够设置断点并检查为什么某些功能在我的场景中不能按预期工作。
对于 iOS 上的 Calabash,这项任务非常简单:不需要额外的准备工作,因为应用程序从捆绑的测试服务器开始,我可以随时将 calabash 附加到它。但是,每次我尝试启动使应用程序运行的葫芦时,Calabash Android 似乎都会强制退出该应用程序。
有什么办法吗?
编辑 看起来下面的答案并没有太大帮助,但我仍然希望有人(葫芦开发者,你在哪里?)有一天会偶然发现这一点。我花了一些时间自己发现了这个问题,这就是具体问题所在:
- 在调试模式下启动应用程序(例如使用 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 instrument 是否可以附加到正在运行的应用程序?
【问题讨论】:
-
Calabash 必须通过检测命令启动应用程序,以使其服务器以允许其查询和控制应用程序的权限运行。 stackoverflow.com/questions/10942049/… 建议您可以将 -e 'debug true' 添加到 Calabash 的检测命令中,然后使用“附加到正在运行的进程”按钮(在 Android Studio 中调试图标的一侧)确保您的应用程序清单设置为可调试。
标签: android cucumber calabash calabash-android android-instrumentation