ios - 如何从模拟器中删除应用程序缓存而不在 UI 测试中删除应用程序本身
问题描述
每次执行新的 UI 测试时,是否可以从模拟器中删除应用缓存?这是我们环境中的一个特定用例,原因有很多,我无法在此讨论。
请注意,我们不可能在 UI 测试中使用 Process() 对象来执行可以清理缓存的 shell 脚本。
我们需要一些东西来清除核心数据中的实体以及应用程序在执行期间可以保留的任何类型的缓存。
解决方案
我通常处理这个问题的方法是定义一个由 AppDelegate 处理的自定义命令行参数,并在启动应用程序的其余部分之前删除所有内容。
您只需要定义一个传递命令行参数的 XCTestPlan 配置,例如:
然后在 中func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
,您只需要检查该命令行参数是否存在并执行您的操作:
if CommandLine.arguments.contains("EnableUITests") {
UIView.setAnimationsEnabled(false)
// Clear Cache
}
在同一个函数中,我还确保禁用动画,以便 UITests 始终给出一致的结果。
推荐阅读
- android - CPU加速状态:该用户无权在docker中使用KVM(/dev/kvm)
- laravel - Laravel - 如何在 hasmany 关系上加载 hasone 关系
- java - 我可以将 HQL 与 JPA 的 @Query 注释一起使用吗?
- angular - 将嵌套对象作为 TextField 的 Kendo DropDownList
- asp.net - 如何更改 MVC(Razor HTML)中饼图切片的颜色?
- cassandra - Cassandra 删除大量行的最佳实践
- celery - 安装气流时芹菜和昆布的版本冲突
- excel - VBA IF SUM 函数
- android - 如何使用 Room Flowable 获取 onComplete
- >?
- android - Android Instant App 启动ActivityForResult