我已将 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 是否可以附加到正在运行的应用程序?