首页 > 解决方案 > 如何从模拟器中删除应用程序缓存而不在 UI 测试中删除应用程序本身

问题描述

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

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

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

标签: iosswiftautomationxcuitest

解决方案


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

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

XCTestPlan 配置

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

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

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


推荐阅读