testWidgets 方法中“异步”的原因是啥?

Posted

技术标签:

【中文标题】testWidgets 方法中“异步”的原因是啥?【英文标题】:What's the reason for "async" in testWidgets methods?testWidgets 方法中“异步”的原因是什么? 【发布时间】:2017-06-09 21:09:08 【问题描述】:

我能找到的每个widget testing 的例子都有你编写带有签名testWidgets('name of the test', (WidgetTester tester) async 的方法。 async 部分是否始终是测试框架的某些要求所必需的,或者仅当您使用 await 或在方法主体的某处进行 Future 调用时?

【问题讨论】:

【参考方案1】:

async 仅在使用await 时才需要。

即使没有必要,他们似乎也有点急于添加(或忘记删除)。

【讨论】:

@FrankHarper 您认为哪一部分不正确?文档确实包含添加了 async 的方法,即使未使用 await - 例如 setUp() @FrankHarper 我的回答是在使用await 时需要async。 Ian 刚刚解释了为什么他们在几乎每个测试中都使用await。如果不使用await,则不需要async。因此,这不是测试框架或类似框架的要求。【参考方案2】:

每当您使用pumpWidgets 时都需要它,如果您使用testWidgets,您几乎总是会使用它,因为这就是testWidgets 的意义所在。

pumpWidgets 之所以使用它,是因为您可以使用 flutter test 加速人工时间或实时 flutter run 运行测试。

【讨论】:

以上是关于testWidgets 方法中“异步”的原因是啥?的主要内容,如果未能解决你的问题,请参考以下文章

异步(非阻塞)代码的可扩展性优势是啥?

在 Delphi 中进行异步套接字编程的惯用方法是啥?

如何使用 testWidgets 测试 Widget 的动态颜色

在 useEffect 挂钩中取消所有异步/等待任务以防止反应中的内存泄漏的正确方法是啥?

从异步函数传播异常的正确方法是啥? [复制]

将同步代码包装成异步方法的最佳方法是啥