用途:这是 Flutter 测试中覆盖已提交 golden 参考图的唯一合规流程。黄金图是测试套件里唯一会销毁断言而非执行断言的操作,因此被设计为手动、低自由度、由人执行的工作流:按顺序执行,不即兴发挥,绝不为了消除失败而运行。
主要能力与规则:黄金图失败是问题而非杂务,重新生成前必须确认每个像素变化都是有意为之,否则视为回归并改代码。必须先让真实断言(几何、点击目标尺寸、溢出、文字缩放、纯 Dart 对比度)通过,因为黄金图本身无法断言任何东西。只能在固定环境(相同 OS 与 Flutter 版本)重新基线化,否则字体栅格化差异会污染所有图片。必须已运行 loadAppFonts(),否则真实字体通道会把字形渲染成 Ahem 方块。禁止在 CI 中使用 --update-goldens,禁止用它修复红色流水线,禁止给不稳定 golden 重新基线化。必须逐张肉眼检查每张变化图片,一次性祝福整个受影响集合而非子集,删除孤儿 PNG,图片单独提交并与引发变化的改动放在同一 PR。
使用方式:先确认改动有意且非黄金测试全绿;不带标志运行失败 golden 并阅读失败输出,查看 failures/ 下的 diff 图;确认处于固定祝福环境;执行 flutter test --update-goldens --tags golden(迭代时也可指定单个文件);用 git status --porcelain -- '*.png' 列出实际变化并逐张打开;意外图片即回归,停止并 git checkout -- <paths> 还原后改代码;用脚本查找无测试引用的孤儿 golden 并删除;清理 failures/ 产物;不带标志重跑 flutter test --tags golden 验证;图片单独提交,提交信息说明原因。
适用场景:Flutter 项目中因设计评审等有意视觉变更而需要更新 golden 基线时。
限制:资料未提供该技能的具体安装命令、收费与平台信息;相关技能与参考链接见原文。