1

问题的一般描述:

由于项目特定(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'
4

0 回答 0