我正在尝试对一个类及其方法进行单元测试。方法通过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);
});
});
1条答案
按热度按时间oyxsuwqo1#
你可能是说
i += arg3
?否则循环计数器永远不会改变。恭喜你,你的测试做了它应该做的,它发现了一个bug。现在您只需要学习如何调试测试,您将释放单元测试的力量。