Flutter升级至3.16.9后golden tests因tester.waitForAssets()挂起
解决Flutter 3.16.9 + golden_toolkit 0.15.0中waitForAssets()导致测试挂起的问题
以下是几个可尝试的解决方案:
- 手动指定需等待的资产
默认tester.waitForAssets()会等待所有项目资产加载完成,但Flutter 3.16.x版本对资产加载的处理逻辑有调整,可能导致部分未使用的资产触发无限等待。可以明确传入测试中实际用到的资产路径,缩小等待范围:
await tester.waitForAssets(const ['assets/icons/test_icon.svg', 'assets/images/bg.png']);
- 关闭multiScreenGolden的自动资产等待
golden_toolkit的multiScreenGoldenMatcher默认会自动调用waitForAssets(),可以通过配置参数关闭这个行为,改为手动预加载所需资产:
await tester.multiScreenGoldenMatcher( 'home_screen_golden', waitForAssets: false, ); // 手动预加载测试用到的资产 await precacheImage(AssetImage('assets/images/bg.png'), tester.context);
检查资产配置与清理缓存
核对
pubspec.yaml中的资产路径,确保路径大小写、层级与实际文件一致(Flutter 3.16对路径解析更严格,跨平台环境下大小写不匹配会导致加载失败)。清理测试缓存,执行以下命令重置环境:
flutter clean flutter pub get flutter test --update-goldens临时降级golden_toolkit版本
若上述方法无效,可尝试将golden_toolkit降级到0.14.0版本,该版本与Flutter 3.16.x的兼容性经过更多验证:
dev_dependencies: golden_toolkit: ^0.14.0
内容的提问来源于stack exchange,提问作者Roc Boronat
相关产品推荐
相关产品推荐

