【问题标题】:Resetting iOS simulator between tests在测试之间重置 iOS 模拟器
【发布时间】:2012-06-03 20:08:03
【问题描述】:

我在仪器中设置了一组自动化测试用例,使用 tuneup.js 来测试应用程序。我决定使用 tuneup.js,因为它允许我将我的测试分成单独的测试用例并从一个单独的脚本运行整个集合,如果所有测试都运行正常,这很好,但是如果一个失败,所有测试都失败,因为模拟器处于未知状态(我已经编写了测试,所以它们都在同一个登录屏幕上开始和结束)有没有办法重置模拟器,或者在测试用例之间重新启动应用程序?

【问题讨论】:

  • 您有没有找到解决办法?
  • 不,很遗憾没有,仍在寻找,但对找到解决方案并不抱太大希望 - 已直接向 Apple 提出了这个问题,所以如果我得到答案会更新
  • 你从苹果那里得到答案了吗?
  • 不,不幸的是没有——在我把它交给别人之前我从来没有解决过,但是我会问一下,看看从那以后是否有任何更新

标签: ios ios-simulator instruments ios-ui-automation


【解决方案1】:

尝试从命令行启动测试。 UI 自动化允许在一次运行中只执行一项测试。测试完成后(不管是失败还是通过) - 应用程序将被系统踢出(UIAutomation)。至少它适用于真实设备。

您的命令行启动脚本将以下列方式运行: 1. 读取带有测试路径的配置文件(可以是任何文件 txt 或 xml)。此时,您将拥有一个包含测试路径和总测试计数的数组。 2. 然后使用简单的“for”循环(从 1 到“testcount”),它将启动带有所需参数的 UIAutomation。其中一个参数是从配置文件中读取的测试脚本的路径。

您还可以将“配置文件”的路径作为命令行启动脚本的参数。这将允许您运行任何测试集,只需使用所需的配置文件调用启动脚本。

【讨论】:

    【解决方案2】:

    我编写了一个脚本,它将重置 iOS 模拟器的所有版本和设备的内容和设置。它从菜单中获取设备名称和版本号,因此它将包括 Apple 为其发布模拟器的任何新设备或 iOS 版本。

    手动运行或在构建脚本中使用很容易。我建议在构建之前将其添加为 Pre-Action Run Script。

    https://github.com/michaelpatzer/ResetAllSimulators

    【讨论】:

      【解决方案3】:

      测试失败会使您的应用处于未知状态,这是按原样使用 Apple 仪器工具的主要问题之一。我们在一个名为Illuminator (on GitHub, and inspired by tuneup.js) 的框架中以两种方式解决了这个问题。

      首先,我们编写了一个automation bridge——一个用于与正在测试的应用程序的RPC通道,它允许我们在每次测试之前重置我们的应用程序。

      如果这还不够,Illuminator 测试运行器可以选择在模拟器的原始启动中重新运行每个失败的测试(例如使用--retest 1x,solo)。

      【讨论】:

        猜你喜欢
        • 2018-08-06
        • 2012-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-28
        • 1970-01-01
        • 1970-01-01
        • 2016-11-08
        相关资源
        最近更新 更多