flutter - 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:
这令人愤怒,原因有两个:
- 什么都没有改变,差异似乎是亚像素渲染差异。这不应该发生,因此使黄金测试变得毫无用处。
- 即使有上述消息,测试也通过了。所以颤振认为有一个例外,但甚至没有通过它的测试。
有没有办法设置差异阈值,以便忽略差异低于 5% 的测试,以避免我的测试输出过于冗长和嘈杂?
值得注意的是,这个问题并非孤立于我们的 CI 服务器,它也发生在我们的本地机器上,因此同一台机器会根据一天中的时间以不同的方式呈现测试似乎很奇怪。
解决方案
此错误可能是由于项目中使用的字体(小部件)引起的
推荐阅读
- java - Java Web 服务客户端给出 JaxWsClientProxy.invoke 错误
- python-3.x - 是否可以在 python 中同时写入多个套接字连接?
- java - 如何从字符串中读取哈希图
- mongodb - MongoDB分片
- c++ - 将整数类型的数组作为另一个不相关的整数类型的数组访问的安全且符合标准的方法?
- javascript - Angular 4+通过接口将服务从孩子发送到父母
- node.js - 如果我用 axios 调用 digisigner 文档 api,则会出现错误请求错误
- python - 将多个字符串写入变量(Python)
- scala - 在 spark scala 中将列表列表转换为数据框
- r - ggplot - 如何手动调整标签