Dart Unit testing中forLoop引发stack overflow的原因排查
单元测试中栈溢出问题的原因分析
核心原因
你的badMethod方法里的for循环存在无限循环,这是触发栈溢出的直接原因:
for (int i = arg1; i <= arg2; i + arg3) { ... }
这里的迭代部分i + arg3仅执行了加法计算,但没有将结果赋值回变量i,导致i始终保持初始值arg1(测试中传入的是1)。循环条件i <= arg2(1 <= 1)永远成立,循环会无限执行——不断调用ClassA.generate创建对象并添加到列表,最终因资源耗尽触发栈溢出错误。
修复方案
把循环的迭代部分修改为赋值操作,让i每次循环后按指定步长递增:
for (int i = arg1; i <= arg2; i += arg3) { ... }
修改后,当i超过arg2时循环会正常终止,不会再出现无限循环的情况。
额外代码问题提示
- 第一个测试用例中
trigger: i的i未定义,属于语法错误,建议修正。 - 第二个测试用例里的
final List<Tile> r = []类型不匹配,应改为final List<ClassA> r = []。
内容的提问来源于stack exchange,提问作者theodore
相关产品推荐
相关产品推荐

