【发布时间】:2020-09-30 23:05:33
【问题描述】:
是否可以在每次执行新的 UI 测试时从模拟器中删除应用缓存?这是我们环境中的一个特定用例,原因有很多,我无法在此讨论。
请注意,我们不可能在 UI 测试中使用 Process() 对象来执行可以清理缓存的 shell 脚本。
我们需要一些东西来清除核心数据中的实体以及应用程序在执行期间可以保留的任何类型的缓存。
【问题讨论】:
标签: ios swift automation xcuitest
是否可以在每次执行新的 UI 测试时从模拟器中删除应用缓存?这是我们环境中的一个特定用例,原因有很多,我无法在此讨论。
请注意,我们不可能在 UI 测试中使用 Process() 对象来执行可以清理缓存的 shell 脚本。
我们需要一些东西来清除核心数据中的实体以及应用程序在执行期间可以保留的任何类型的缓存。
【问题讨论】:
标签: ios swift automation xcuitest
我通常处理这个问题的方式是定义一个由 AppDelegate 处理的自定义命令行参数,并在启动应用程序的其余部分之前删除所有内容。
您只需要定义一个传递命令行参数的 XCTestPlan 配置,例如:
然后在func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool,您只需要检查该命令行参数是否存在并执行您的操作:
if CommandLine.arguments.contains("EnableUITests") {
UIView.setAnimationsEnabled(false)
// Clear Cache
}
在同一个函数中,我还确保禁用动画,以便 UITests 始终给出一致的结果。
【讨论】: