使用forLoops的Dart单元测试返回stackoverflow

guykilcj  于 2023-09-28  发布在  其他
关注(0)|答案(1)|浏览(114)

我正在尝试对一个类及其方法进行单元测试。方法通过forLoop中的工厂生成器方法生成一个对象列表。
1.单元测试我发现的方法通过返回堆栈溢出破坏了我的测试环境
1.如果我移除forloop,单元测试就会成功,没有任何问题
是什么导致了这种断裂?

final ClassA sut = ClassA();

// The suspect

  void badMethod(
    int arg1,
    int arg2,
    int arg3,
    List<ClassA> ls,
  ) {
    for (int i = arg1; i <= arg2; i + arg3) {

      /// Below is a factory generator method from the Parent class, 
      /// being used in this subclass

      ClassA t = ClassA.generate(type: 'test', trigger: i);
      ls.add(t);
    }
    return;
  }

// ----Test below

  group('info', () {

// No problems here

    test('test', () {
      final List<ClassA> r = [];

      ClassA t = ClassA.generate(type: 'test', trigger: i);
      r.add(t);

      expect(r, []);
    });

//! stackoverflow here

    test('adds object to list', () {
      final List<Tile> r = [];

      sut.badMethod(1, 1, 5, r); // <-- bad boy

      expect(r, []);
      expect(r.length, 0);

    });
  });
oyxsuwqo

oyxsuwqo1#

for (int i = arg1; i <= arg2; i + arg3)

你可能是说i += arg3?否则循环计数器永远不会改变。
恭喜你,你的测试做了它应该做的,它发现了一个bug。现在您只需要学习如何调试测试,您将释放单元测试的力量。

相关问题