问题的一般描述:
由于项目特定(iDevice 必须通过 Lightning 端口连接到外部硬件),我们必须通过 Wi-fi 执行我们的测试包。
有专用的 Macbook Pro(2011 年初)和 Yosemite 10.10.2 作为客户端执行测试。Mac 和 iDevice 都连接到同一个隔离的(仅 1 个 Mac 和 1 个 iDevice)Wi-Fi 接入点(无法访问互联网)。
每次我尝试执行所有现有测试套件(约 150 个测试)时,我都会面临这样一个事实,即在某个随机点(即当时已经执行了一些测试),带有 Calabash 服务器的应用程序是可视启动的在 iDevice 端,但从命令行的角度来看,服务器似乎没有响应它已成功启动的 Mac 客户端(只是我的假设),并且整个执行在这一点上卡住了。如果我通过“Ctrl+C”放弃测试执行并尝试再次开始执行或通过控制台执行 start_test_server_in_background,我将看到应用程序服务器已启动并立即关闭多次,但没有任何运气来建立新的稳定应用程序服务器。
这里唯一的解决方法是重新启动 iDevice 并在重新启动后通过 USB 连接 iDevice 启动 App 服务器,然后我才能再次通过 Wi-fi 运行 Calabash 测试。
我尝试过使用许多不同的 iDevices 和不同的 Wi-Fi 接入点,以及几台 Mac,但没有运气能够为所有测试提供一个稳定的不间断运行。
如果有人帮助我解决这个令人难以置信的烦人问题,我会非常高兴。
一些细节:
- iOS版本:8.1.3、8.2
- XCode 版本:6.2
- Mac 操作系统版本:10.10.2
- Xcode 路径:/Applications/Xcode.app/Contents/Developer
- 葫芦版本:0.13.0(和 0.14.0)
- calabash.framework 版本:0.13.0(和 0.14.0)
- 这是发生“挂起”时的控制台输出(DEBUG=1):
@test
Scenario: [12657] Scenario Name # features/2_feature_name.feature:87
INFO: Using uia strategy: 'host'
Preparation took 0.099263 seconds
{
:app => "com.xxx.one",
:args => [],
:bundle_dir_or_bundle_id => "com.xxx.one",
:bundle_id => "com.xxx.one",
:device => "com.xxx.one",
:device_target => "00fea94be88909c74aa7b68a2b7f3f339407163b",
:launch_method => :instruments,
:launch_retries => 5,
:log_file => "/var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1/run_loop.out",
:no_launch => false,
:no_stop => false,
:reset => false,
:results_dir => "/var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1",
:results_dir_trace => "/var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1/trace",
:script => "/var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1/_run_loop.js",
:sdk_version => nil,
:udid => "00fea94be88909c74aa7b68a2b7f3f339407163b",
:uia_strategy => :host,
:xcode => "6.2",
:xcode_path => "/Applications/Xcode.app/Contents/Developer"
}
### Starting on 00fea94be88909c74aa7b68a2b7f3f339407163b App: com.xxx.one ###
2015-04-08 12:38:22 +0300 xcrun instruments -w 00fea94be88909c74aa7b68a2b7f3f339407163b -D /var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1/trace -t Automation com.dxo.one -e UIARESULTSPATH /var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1 -e UIASCRIPT /var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1/_run_loop.js >& /var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150408-59711-1rjd4d1/run_loop.out
更新:这是 Calabash 在卡住后无法重新启动应用程序时向终端打印的内容:
Calabash::Cucumber::Launcher::StartError: Time out waiting for UIAutomation run-loop Error while writing to fifo. RunLoop::Fifo::NoReaderConfiguredError.
Logfile /var/folders/4w/tw3_yvd54sq9brl1kxf9cy8c0000gp/T/run_loop20150422-35789-1mgrom1/run_loop.out
2015-04-22 11:03:41.649 instruments[35913:114217] WebKit Threading Violation - initial use of WebKit from a secondary thread.
Instruments Trace Error : Target failed to run: Failed looking up pid of launched process
(Calabash::Cucumber::Launcher::StartError)
/Users/wrathttodd/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/calabash-cucumber-0.14.0/lib/calabash-cucumber/launcher.rb:772:in `new_run_loop'
/Users/wrathttodd/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/calabash-cucumber-0.14.0/lib/calabash-cucumber/launcher.rb:630:in `relaunch'
/Users/wrathttodd/APP NAME/PATH/AAT/features/support/01_launch.rb:27:in `Before'