【问题标题】:How to delate app cache from the simulator without deleting the app itself in UI tests如何从模拟器中删除应用程序缓存而不在 UI 测试中删除应用程序本身
【发布时间】:2020-09-30 23:05:33
【问题描述】:

是否可以在每次执行新的 UI 测试时从模拟器中删除应用缓存?这是我们环境中的一个特定用例,原因有很多,我无法在此讨论。

请注意,我们不可能在 UI 测试中使用 Process() 对象来执行可以清理缓存的 shell 脚本。

我们需要一些东西来清除核心数据中的实体以及应用程序在执行期间可以保留的任何类型的缓存。

【问题讨论】:

    标签: ios swift automation xcuitest


    【解决方案1】:

    我通常处理这个问题的方式是定义一个由 AppDelegate 处理的自定义命令行参数,并在启动应用程序的其余部分之前删除所有内容。

    您只需要定义一个传递命令行参数的 XCTestPlan 配置,例如:

    然后在func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool,您只需要检查该命令行参数是否存在并执行您的操作:

    if CommandLine.arguments.contains("EnableUITests") {
           UIView.setAnimationsEnabled(false)
           // Clear Cache
    }
    

    在同一个函数中,我还确保禁用动画,以便 UITests 始终给出一致的结果。

    【讨论】:

    • // 清除缓存这是我现在卡住的部分,因为开发团队使用了不同的技术来存储缓存。我希望有像单线一样,只是清除应用程序缓存,就好像它被删除了一样。
    • 嗯,这取决于东西的存储位置。例如,UserDefaults 可以将所有内容重置为默认值(请参阅stackoverflow.com/questions/6797096/…)。
    猜你喜欢
    • 1970-01-01
    • 2011-02-28
    • 2014-04-30
    • 2013-06-23
    • 1970-01-01
    • 2013-06-22
    • 2011-10-12
    • 2014-12-11
    • 2019-02-03
    相关资源
    最近更新 更多