我一直在尝试使用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上都运行良好,所以我猜这不是Profiles和设备本身的问题。
可能导致此问题的原因是什么?
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我无法发送请求?
答案 0 :(得分:2)
如果应用程序打开且没有任何反应,通常是设备端点设置不正确。应用程序基于捆绑包ID打开,但随后calabash尝试通过设备端点与应用程序进行交互。
尝试在calabash控制台中运行应用程序,如果它的行为与测试中的行为相同,那么设备端点就会出现问题。需要检查的一些想法是,您在手机和运行测试的机器上的同一网络,无论您的VPN是否以某种方式干扰通信或者仪器是否在测试机器上打开。
当应用程序打开时,您应该可以运行
curl http://your.ip.address:37265/version
并获得葫芦版本号的回复。如果你不能得到它,那么葫芦将无法在你的测试中做任何事情。