在以下警告输出后,我的小部件测试失败:
flutter: 警告:使用查找器“仅一个具有文本“Tab 2”的小部件(忽略非显示小部件):Text(“Tab 2”,softWrap:只在换行字符处换行,溢出:淡出,依赖项:[MediaQuery,DefaultTextStyle])”来调用tap()导出了一个偏移量(Offset(600.0,23.0)),该偏移量不会在指定的小部件上进行测试。 flutter:也许小部件实际上是屏幕外的,或者另一个小部件遮挡了它,或者小部件无法接收指针事件。
点击操作从未执行,因此测试的下一部分失败了。我在测试中加入了一些延迟,并且似乎测试尝试点击正确的小部件-它不是屏幕外,没有被遮挡,并且过去能够接收指针事件-不确定为什么它当前失败了。
这里是一个最小的可再现示例:
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: DefaultTabController(
length: 2,
child: Scaffold(
appBar: TabBar(
labelColor: Color(0xff8391e4),
tabs: [
Tab(text: 'Tab 1'),
Tab(text: 'Tab 2'),
],
),
body: TabBarView(
children: <Widget>[
Text('Tab 1 Text'),
Text('Tab 2 Text'),
],
),
),
),
);
}
}
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
testWidgets('My Test', (WidgetTester tester) async {
await tester.pumpWidget(MyApp());
await tester.pumpAndSettle();
// Warning thrown on this tap - tap never executed
await tester.tap(find.text('Tab 2'));
await tester.pumpAndSettle();
// Test fails here
expect(find.text('Tab 2 Text'), findsOneWidget);
});
}
ensureVisible
,但是没有成功。 - Chen