在iOS

时间:2016-01-04 12:10:35

标签: ios ruby calabash calabash-ios

我是 Calabash iOS 自动化测试的新手。我在Snow Leopard(版本10.6.8)上安装了“Xcode 4.2”,“Ruby version 2.0.0p643”和“calabash-cucumber gem”

我运行了命令“calabash-ios setup”并为我的测试iOS项目创建了一个目标(test-cal目标)。使用此命令,CFNetwork.framework和calabash.framework将添加到test-cal目标。

之后,我在终端中运行了“calabash-ios gen”并创建了一个名为features的子目录,并手动将功能子目录添加到test-cal目标。

我在features文件夹下的“sample.feature”文件中编写了一个测试脚本,然后在终端执行了yellow命令来测试脚本。

运行命令后,它给出了以下错误:

Scenario: Sample test                          # features/sample.feature:3

 Unable to auto detect APP_BUNDLE_PATH.
  Have you built your app for simulator?

Searched dir: /Users/octaneconference/Library/Developer/Xcode/DerivedData/Test-frkimcejhwemmaaapwknwfwvhnmb

Please build your app from Xcode

You should build the -cal target.

  Alternatively, specify APP_BUNDLE_PATH in features/support/01_launch.rb
  This should point to the location of your built app linked with calabash.
   (RuntimeError)

  ./features/support/01_launch.rb:29:in `Before'
    Given the app has launched                   # features/steps/sample_steps.rb:1
    And then the Sound Enable screen will appear # features/sample.feature:5
    When click on "NO" button                    # features/sample.feature:6
    Then Menu screen will appear in the screen   # features/sample.feature:7
    Then take a picture                          # features/sample.feature:8

Failing Scenarios:

cucumber features/sample.feature:3 # Scenario: Sample test

1 scenario (1 failed)
5 steps (1 skipped, 4 undefined)
0m0.965s

You can implement step definitions for undefined steps with these snippets:

Given(/^then the Sound Enable screen will appear$/)
do

pending # Write code here that turns the phrase above into concrete actions
end

When(/^click on "([^"]*)" button$/) do |arg1|

  pending # Write code here that turns the phrase above into concrete actions
end

Then(/^Menu screen will appear in the screen$/) 

do
  pending # Write code here that turns the phrase above into concrete actions

end

Then(/^take a picture$/) do

pending # Write code here that turns the phrase above into concrete actions

end     

我很感激有关解决此问题的任何建议/想法。

1 个答案:

答案 0 :(得分:2)

对于初学者,请确保您至少使用OSX Yosemite或更高版本,Xcode 6或更高版本(最好> = 7),并确保您拥有最新的葫芦黄瓜宝石(在撰写本文时,0.17) .0)。您可以通过运行

来验证这一点
calabash-ios version

其次,从哪里运行cucumber命令?如果您尝试从xcode项目在模拟器上运行测试,则需要与<app_name>.xcodeproj位于同一目录中。正如错误消息所示,您还需要确保在运行之前实际为模拟器构建了项目。

如果您尝试在模拟器应用程序包(扩展名为.app的文件夹)上运行测试,则可以改为运行:

APP_BUNDLE_PATH=/path/to/appname.app DEVICE_TARGET="<UUID>" cucumber

(您可以通过运行instruments -w devices

找到模拟器的uuids

对于它的价值,我还建议您查看calabash-sandbox以获得简化的ruby设置。