扑。如何测试集成测试没有溢出?
Flutter. How to test that there is no overflows with integration tests?
我使用 flutter_driver 在 Flutter 中进行集成测试。在某些屏幕上,按钮上的文本会产生溢出错误。我想创建一个可以显示溢出发生的测试。因此,当我将 运行 在一堆 virtual/real 设备上进行所有集成测试时,我可以看到 UI 的位置不正确。
不需要为此进行集成测试。小部件测试就可以了。
由于 Widget 测试在启用断言的情况下运行,因此使用会溢出的 widget 调用 tester.pumpWidget
将引发异常并因此导致测试失败。
例如,以下测试将失败:
testWidgets('overflow', (tester) async {
await tester.pumpWidget(Row(
textDirection: TextDirection.ltr,
children: <Widget>[
// too big to fit in the default size of the row
Container(width: 99999),
],
));
});
请注意,可以自定义小部件测试的屏幕尺寸。参见
或者,我们可以将我们测试过的小部件包装成 Container
,如下所示:
await tester.pumpWidget(Container(
alignment: Alignment.center,
width: <my screen widget>,
height: <my screen height>,
child: <the widget which I want to test overflow on>,
);
我使用 flutter_driver 在 Flutter 中进行集成测试。在某些屏幕上,按钮上的文本会产生溢出错误。我想创建一个可以显示溢出发生的测试。因此,当我将 运行 在一堆 virtual/real 设备上进行所有集成测试时,我可以看到 UI 的位置不正确。
不需要为此进行集成测试。小部件测试就可以了。
由于 Widget 测试在启用断言的情况下运行,因此使用会溢出的 widget 调用 tester.pumpWidget
将引发异常并因此导致测试失败。
例如,以下测试将失败:
testWidgets('overflow', (tester) async {
await tester.pumpWidget(Row(
textDirection: TextDirection.ltr,
children: <Widget>[
// too big to fit in the default size of the row
Container(width: 99999),
],
));
});
请注意,可以自定义小部件测试的屏幕尺寸。参见
或者,我们可以将我们测试过的小部件包装成 Container
,如下所示:
await tester.pumpWidget(Container(
alignment: Alignment.center,
width: <my screen widget>,
height: <my screen height>,
child: <the widget which I want to test overflow on>,
);