You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:00:02