葫芦黄瓜模拟器没有运行与“-cal”方案相同的应用程序版本

时间:2015-10-09 17:07:31

标签: ios cucumber calabash calabash-ios

我开始使用“-cal”方案,就像Calabash setup guide告诉我的那样。然后我为Calabash-iOS运行cucumber。模拟器似乎在我的应用程序的不同(可能是缓存版本)执行测试之前停止并重新启动,并且目标设备已从iPhone 6更改为在iPhone 5s中运行测试。

如何让cucumber在已经运行的“-cal”方案中执行测试?或者(更好的是)如何使用“-cal”方案重新启动它?我可以看到重新启动有价值的案例。

以下是在场景运行之前执行的唯一代码。我知道它在.relaunch就在那里,但是如果我把它取出来那么第一步测试就失败了。

Before do |scenario|
  @calabash_launcher = Calabash::Cucumber::Launcher.new
  unless @calabash_launcher.calabash_no_launch?
    @calabash_launcher.relaunch
    @calabash_launcher.calabash_notify(self)
  end
end

2 个答案:

答案 0 :(得分:1)

所以那里几乎没有问题。

  1. 如何让黄瓜在已经运行的“-cal”方案中执行测试? 答案:构建cal目标时,您可以定义要构建的目标,并在执行测试时定义要执行的目标。 构建:-sdk iphonesimulator9.0 执行:DEVICE_TARGET ='iPhone 6 Plus(9.0)'

  2. 模拟器似乎在我的应用程序的不同(可能是缓存版本)执行测试之前停止并重新启动,目标设备已从iPhone 6更改为在iPhone 5s中运行测试。 答:也部分与问题1相关(定义目标来控制您测试的设置)。除此之外,应用程序将在场景之间重新启动,否则每个场景将取决于之前执行的其他任务。 您可以切换的一件事是应该在场景之间重新安装应用程序。如果您有一些仅在首次安装/启动时显示/执行的功能,这将非常有用。要添加对重新安装的支持,您可以在“之前做|场景|”

    中向launch.rb文件添加类似的内容。
      

    如果scenario_tags.include?('@重新安装')       @ calabash_launcher.reset_app_sandbox结束

答案 1 :(得分:1)

  

模拟器似乎在执行测试之前停止并重新启动

模拟器在每个场景之前退出并重新启动以确保稳定性。如果我们让模拟器保持打开状态,它会很快变得不稳定。有关详细信息,请参见下文。

  我的应用程序的

(可能是缓存版本)

这不再是从运行循环1.5 *开始的问题,这是Calabash 0.16.4所要求的。 What version of Calabash are you running?如果您是从命令行和Xcode构建的,请查看此项目Calabash iOS Smoke Test,特别是this script,它将Xcode构建的产品分级到与命令行构建相同的目录。

  

iPhone 6在iPhone 5s中运行测试。

从Xcode 7.1开始,默认模拟器是iPhone 6. Pre Xcode 7.1,默认模拟器一直是iPhone 5s。 Lasse是正确的,请使用DEVICE_TARGET来控制要运行的模拟器。

  

如何让黄瓜在已经运行的" -cal"中执行测试?方案?或者(更好的是)如何使用" -cal"重新启动它?方案?

您不必在场景之间重新启动。重新启动将重新启动模拟器。如果您不想重新启动,可以使用自定义的calabash后门在每次测试开始之前将应用重置为一个熟知的状态。我曾经一直这样做;它真的加快了测试速度。但是,我放弃了这种方法,因为它很难维护,正如我所提到的,模拟器变得不稳定。

  

或者(更好的是)如何使用" -cal"重新启动它?方案

我实际上并不理解。你设置了APP变量吗?是另一个应用程序启动?您运行calabash setup并且您的应用是否有Watch扩展程序?如果是这样,您可能会遇到此问题:calabash setup adds calabash.framework to Watch extension instead of the app