首页 > 解决方案 > Flutter 金色图像测试差异阈值

问题描述

我正在对 Flutter 中的简单无状态小部件使用黄金图像测试。每隔几次测试运行,我就会将以下错误打印到控制台:

══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following TestFailure object was thrown running a test (but after the test had completed):
  Expected: one widget whose rasterized image matches golden image
"goldens/mywidget.png"
  Actual: _WidgetTypeFinder:<zero widgets with type "MyWidget" (ignoring offstage widgets)>
   Which: Golden "goldens/mywidget.png": Pixel test failed, 0.04% diff detected.
          Failure feedback can be found at
/home/cirrus/project/test/widgets/failures

When the exception was thrown, this was the stack:

这令人愤怒,原因有两个:

  1. 什么都没有改变,差异似乎是亚像素渲染差异。这不应该发生,因此使黄金测试变得毫无用处。
  2. 即使有上述消息,测试也通过了。所以颤振认为有一个例外,但甚至没有通过它的测试。

有没有办法设置差异阈值,以便忽略差异低于 5% 的测试,以避免我的测试输出过于冗长和嘈杂?

值得注意的是,这个问题并非孤立于我们的 CI 服务器,它也发生在我们的本地机器上,因此同一台机器会根据一天中的时间以不同的方式呈现测试似乎很奇怪。

标签: flutterflutter-test

解决方案


此错误可能是由于项目中使用的字体(小部件)引起的


推荐阅读