可以在测试代码中以编程方式重置模拟器吗?

时间:2013-10-14 18:06:17

标签: ios xcode ios-simulator

我在模拟器上运行了一些测试代码,但是每次运行之前都需要重置模拟器内容,以确保在每次重新运行测试用例之前删除应用程序在执行期间存储和缓存的数据。 / p>

有没有办法在测试中做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用simctl从命令行重置模拟器,您可以在操作中的脚本中使用该模拟器在测试方案之前运行,但不能在单个测试用例中运行。您需要安装xcode命令行工具

重置模拟器使用:

xcrun simctl erase <simulator device id>

获取您使用的设备ID:

$ xcrun simctl list devices
== Devices ==
-- iOS 10.2 --
    iPhone 5 (D226CF12-6782-4D7D-9C00-2D662CF4022C) (Shutdown)
    iPhone 5s (34E0E0F8-3429-4D91-B038-ECF4FD0F3311) (Shutdown)
    iPhone 6 (9C772A68-34E3-4F3F-981C-543DE6D5D985) (Shutdown)
    iPhone 6 Plus (7848A50E-BFB5-4F19-BB31-4A56CA78AA2C) (Shutdown)
    iPhone 6s (12CF89BA-C8B2-4837-B4EB-FB24DFF1622C) (Shutdown)
    iPhone 6s Plus (3EE6CA84-8F12-4A5E-A31D-EF4BF3CCBDB2) (Shutdown)
    iPhone 7 (1EB3CE5D-849C-491C-9CAA-5E97B1BD89CE) (Booted)
    iPhone 7 Low Disk Space (6CCF4C7A-606B-40B7-A8D8-DF8B3CB119CB) (Shutdown)
    iPhone 7 Plus (94FEFD36-6EFF-4762-BD21-79B1F958F6C6) (Shutdown)
    iPhone SE (E8E8ECEB-34C0-44F0-B92E-57DCA91024F1) (Shutdown)
    iPad Retina (0DA5BF39-3DC7-49B3-BE9B-2FA756FCA725) (Shutdown)
    iPad Air (DAB9C2D3-8EBC-41DC-9C2D-0ECEC1D2FAE3) (Shutdown)
    iPad Air 2 (1E2DA170-5C2E-413C-831B-FA65524643D3) (Shutdown)
    iPad Pro (9.7 inch) (99F931A9-0708-4637-9294-6420DC7A149C) (Shutdown)
    iPad Pro (12.9 inch) (08CD02EB-C44A-4183-961A-EED89FF1C225) (Shutdown)
-- tvOS 10.1 --
    Apple TV 1080p (7EE393F2-C83E-467F-9802-3E5BFE7C2CA9) (Shutdown)
-- watchOS 3.1 --
    Apple Watch - 38mm (B8969533-D7CD-462E-9E76-511C08E8CC8E) (Shutdown)
    Apple Watch - 42mm (E16167D9-1007-438B-8812-CD97CE6ABECA) (Shutdown)
    Apple Watch Series 2 - 38mm (F59C0BB1-B4D0-47DD-B927-1BFD78DD78C0) (Shutdown)
    Apple Watch Series 2 - 42mm (7FE3AADD-94AB-46B9-A057-78F20F030999) (Shutdown)

设备ID保持不变我认为在它们被删除或重新创建之前,可能有可能使用一些脚本magik来检索启动的模拟器的设备ID(我还没有解决),当前活动模拟器始终标记为(已启动)

你也可以使用simctl来创建自定义模拟器,只需使用xcrun simctl列出它所做的所有事情。

答案 1 :(得分:0)

您可以使用LUA脚本在自动化测试中执行此操作。有关详细说明,请查看http://www.coronalabs.com/blog/2011/08/11/automated-testing-on-mobile-devices-part4/

基本上你会让lua使用事件来重置它。