【发布时间】:2020-10-14 12:04:38
【问题描述】:
我正在对 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 服务器,它也发生在我们的本地计算机上,因此同一台计算机会根据一天中的时间以不同方式呈现测试似乎很奇怪。
【问题讨论】:
-
我只发现 api.flutter.dev/flutter/flutter_test/goldenFileComparator.html 可以添加自定义比较器(也许复制粘贴 Flutter 集成并进行一些调整,或者它可以继承 - 尚未检查)跨度>
-
我不再从事该项目,但最终将黄金文件测试替换为标准小部件测试会更快更容易。类似于 Jest 快照测试的东西比图像比较 IMO 更有用
-
我只是为其他登陆这里的人发布了它。开玩笑看起来很有趣。我认为这也非常适合 Flutter。
标签: flutter flutter-test