Flutter bloc测试抛异常时VS Code中断需按F5恢复,执行方式是否正确?
问题解答
核心疑问回复
- 你的测试执行方式完全正确,测试用例写法、模拟逻辑、被测试代码的异常捕获逻辑都符合bloc_test、mocktail、Flutter测试的规范,测试本身不存在功能问题。
- 异常抛出后需要手动按F5恢复运行不属于测试层面的正常现象,是VS Code默认调试配置导致的可优化问题。
触发中断的原因
VS Code的Dart/Flutter调试器默认开启了未捕获异常断点,哪怕你的代码里已经用try/catch显式捕获了异步抛出的异常,调试器也会在异常抛出的瞬间先触发中断,之后才会执行catch分支的逻辑,所以才会出现测试逻辑没问题但需要手动恢复执行的情况。
解决方法
你可以通过调整VS Code调试配置直接解决这个问题:
- 打开VS Code调试面板(左侧边栏瓢虫形状图标,或者按快捷键
Ctrl+Shift+D/Command+Shift+D唤出) - 找到面板底部的「断点」分类,取消勾选 Uncaught Exceptions(未捕获的异常) 选项,如果不需要所有异常都中断,也可以同时取消勾选 All Exceptions(所有异常)
- 重新运行测试即可,后续预期内的异常抛出场景不会再触发调试中断,整个测试套件会自动跑完所有用例。
调整该配置不会影响正常的异常排查:如果真的出现代码未捕获的异常导致测试失败,测试框架依然会输出对应的错误日志,不影响问题定位。
内容的提问来源于stack exchange,提问作者Rune Hansen
相关产品推荐
相关产品推荐

