You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart/Flutter测试是同步还是异步执行?test runner运行逻辑问询

Flutter/Dart test runner 测试执行逻辑说明

1. 单测试的同步/异步支持

Dart测试框架同时支持同步和异步测试:

  • 同步测试按普通Dart同步代码逻辑执行,执行完所有同步代码即判定测试结束
  • 异步测试只需给测试函数加上async关键字,框架会自动等待测试函数返回的Future完成后再判定测试结束,异步过程中抛出的异常也会被正常捕获作为测试失败的依据

2. 测试/套件的并发执行规则

默认配置下执行逻辑符合你提到的第三种情况:同测试套件(同个测试文件)内串行执行,不同测试套件(不同测试文件)并行执行,具体规则如下:

  • 同个测试文件内的所有测试,严格按代码声明顺序串行执行,任意时刻仅运行该文件内的一个测试,对应同文件内的setUp/tearDown会在每个测试运行前后分别执行,不会出现同文件多个测试的生命周期函数交叉执行的情况
  • 不同测试文件会被框架分配到独立的Dart Isolate中并行运行,默认并发数和设备CPU核心数匹配,你也可以通过dart test -j <并发数>的命令参数手动调整并发上限,比如指定-j 1即可全局禁用并行,所有测试按顺序串行执行
  • 不同测试文件因为运行在独立Isolate中,内存空间完全隔离,各自的全局变量、setUpAll/tearDownAll逻辑完全互不影响

测试代码设计注意事项

  • 同文件内的测试如果依赖全局状态,要注意串行执行带来的状态传递问题,必要时在setUp中重置状态,避免前一个测试的运行结果影响后一个测试的正确性
  • 跨文件的测试不需要考虑状态互相干扰的问题,无需额外做隔离处理

内容的提问来源于stack exchange,提问作者Andrew Piterov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:15:04