【发布时间】:2020-01-20 02:50:33
【问题描述】:
我有一个 Flutter 驱动集成测试,它将作为 CI 构建的一部分在各种设备上运行测试。 Flutter drive 仅在输出中记录异常,但不会使测试失败。当渲染引擎抛出这个 Renderflex 溢出异常时,有什么方法可以强制测试失败?
$ flutter drive test_driver/app.dart
I/flutter (20477): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter (20477): The following assertion was thrown during layout:
I/flutter (20477): A RenderFlex overflowed by 1.00 pixels on the bottom.
...
I/flutter (20477): ◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤
I/flutter (20477): ════════════════════════════════════════════════════════════════════════════════════════════════════
00:25 +4: MyTestDriver App (tearDownAll)
00:25 +4: All tests passed!
此异常也不会在应用程序中传播,因此应用程序和“flutter drive”集成测试似乎都没有明显的访问权限。
所有搜索都会出现关于如何解决问题的问题,但没有关于如何在 CI 构建中作为集成测试的一部分进行测试和检测的问题。
理想情况下,测试将返回非零值,并让 CI 系统在提交时失败,从而引入新的渲染错误。
【问题讨论】:
-
你能贴出你尝试过的代码块吗
-
任何产生溢出的测试。制作一个不会因剪辑到父级或设备而呈现的小部件。