【问题标题】:Calabash-cucumber simulator not running same version of app as the "-cal" schemeCalabash-cucumber 模拟器没有运行与“-cal”方案相同版本的应用程序
【发布时间】:2015-10-15 03:19:59
【问题描述】:

我从运行“-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

【问题讨论】:

    标签: ios cucumber calabash calabash-ios


    【解决方案1】:

    所以这里的问题很少。

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

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

      如果scenario_tags.include?('@reinstall') @calabash_launcher.reset_app_sandbox 结束

    【讨论】:

    • reset_app_jail 在 0.10.0 中已弃用 - 请使用 reset_app_sandbox
    【解决方案2】:

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

    模拟器在每个场景之前退出并重新启动以保持稳定性。如果我们保持模拟器打开,它很快就会变得不稳定。详情见下文。

    (可能是缓存版本)我的应用程序

    从运行循环 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。在 Xcode 7.1 之前,默认模拟器一直是 iPhone 5s。 Lasse 是正确的,使用DEVICE_TARGET 来控制在哪个模拟器上运行。

    如何让 cucumber 在已经运行的“-cal”方案中执行测试?或者(更好)如何使用“-cal”方案使其重新启动?

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

    或者(更好)如何使用“-cal”方案使其重新启动?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      • 2016-03-23
      • 2013-03-15
      • 2021-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多