iOS 设备上的 Calabash 测试启动应用程序但在 "Scenario" 上冻结

Calabash testing on iOS device starts app but freezes on "Scenario"

我一直在尝试使用 Calabash 来测试一些简单的 iOS 应用程序。我能够 运行 模拟器上的应用程序,所有步骤都正常。现在我想在 iOS 设备上测试它,但我遇到了一些问题。我 运行 这个命令包含所有必要的信息:

BUNDLE_ID=... DEVICE_TARGET=... DEVICE_ENDPOINT=http://MY_IP:37265 cucumber

一段时间后,应用程序在 iPhone 中打开,我在控制台上获得了通常的信息:

Feature: Running a test
  As an iOS developer
  I want to have a sample feature file
  So I can begin testing quickly

  Scenario: Example steps              # features/my_first.feature:6

但它永远留在那里。我把它放了一会儿,它什么也没做。

我也尝试过 Appium 进行测试,它在模拟器和 iPhone 上都运行良好,所以我想这不是配置文件和设备本身的问题。

可能是什么导致了这个问题?

My setup:
- Mac OS X 10.10.3
- Xcode Version 6.3 (6D570)
- iPhone 4 - iOS 7.1.2 (11D257)
- calabash-cucumber (0.14.0)
- cucumber (1.3.19)

更新

尝试curl http://192.168.200.168:37265/version(按照@alannichols 的建议)我得到:

Failed to connect to 192.168.200.168 port 37265: Operation timed out

但我的测试是从 Xcode(在设备上)执行 -cal 目标并 运行 执行命令的第一步:

NO_LAUNCH=1 DEVICE_TARGET=... DEVICE_ENDPOINT=http://192.168.200.168:37265 cucumber

仍然出现错误,但这次是 timeout 错误:

Operation timed out - connect(2) for "192.168.200.168" port 37265 (Errno::ETIMEDOUT)

这是否意味着我到达 iPhone 以某种方式无法发送请求?

如果应用程序打开后没有任何反应,通常是设备端点设置不正确。该应用程序根据捆绑包 ID 打开,但随后 calabash 尝试通过设备端点与该应用程序交互。

尝试 运行在 calabash 控制台中启用该应用程序,如果它的行为方式与您的测试相同,则说明设备端点存在问题。要检查的事情的一些想法是您在 phone 上的同一网络上和测试机器 运行ning 上,您的 vpn 是否以某种方式干扰通信或仪器是否打开在测试机上。

应用程序打开后,您应该可以 运行

curl http://your.ip.address:37265/version

并获得带有 calabash 版本号的响应。如果你做不到,那么葫芦将无法在你的测试中做任何事情。