在测试之间重置iOS模拟器

时间:2012-05-29 15:11:43

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

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

3 个答案:

答案 0 :(得分:0)

尝试从命令行启动测试。 UI Automation允许在一次运行中仅执行一个测试。测试完成后(如果失败或通过无关紧要) - 系统将启动应用程序(UIAutomation)。至少它适用于真实设备。

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

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

答案 1 :(得分:0)

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

手动运行或在构建脚本中使用很容易。我建议在构建之前将其添加为预操作运行脚本。

https://github.com/michaelpatzer/ResetAllSimulators

答案 2 :(得分:0)

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

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

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