FBSnapshotTestCase无法创建FB_REFERENCE_IMAGE_DIR等目录导致快照测试失败如何解决
FBSnapshotTestCase 文件夹创建失败&快照测试报错排查步骤
- 检查环境变量配置范围
环境变量必须配置在测试Target对应的Scheme下,不要配置到主App的Scheme中,同时要勾选Run、Test两个执行场景的复选框,确保执行测试时变量可以被正常读取。 - 校验路径配置格式
优先使用相对路径配置FB_REFERENCE_IMAGE_DIR和IMAGE_DIFF_DIR,示例:
路径中不要包含中文、特殊字符、空格,避免系统路径解析失败。FB_REFERENCE_IMAGE_DIR = $(SRCROOT)/你的项目名称/ReferenceImages IMAGE_DIFF_DIR = $(SRCROOT)/你的项目名称/FailureDiffs - 手动初始化文件夹验证权限
先在你配置的对应路径下手动创建ReferenceImages和FailureDiffs两个文件夹,右键选择「显示简介」,在「共享与权限」中给当前用户开启读写权限,再开启录制模式运行测试,确认是否可以生成基准截图。 - 修正录制模式逻辑
你当前的代码每次执行测试前都会开启录制模式,会导致每次运行都覆盖基准截图,不会进入对比逻辑。正确操作是首次录制完基准截图后,直接将recordMode改成false即可:override func setUpWithError() throws { super.setUp() vc = ViewController() recordMode = false // 首次录制完成后改为false // 可选配置:开启层级渲染,提升截图兼容性 usesDrawViewHierarchyInRect = true } - 解决快照对比不匹配问题
录制和对比测试必须使用完全相同的模拟器型号、系统版本、屏幕缩放比例,设备参数不一致会直接导致对比失败。如果允许微小的系统渲染差异,可以在验证时添加容差参数:// tolerance 取值0-1,代表允许的像素差异比例 FBSnapshotVerifyView((vc?.view)!, tolerance: 0.05)
内容的提问来源于stack exchange,提问作者Alon Mel
相关产品推荐
相关产品推荐

