https://codelabs.developers.google.com/codelabs/flutter-app-testing 并卡在第 6 步。
在文件test/favorites_test.dart 中的函数中,如果我将 i+=2 更改为 i++ ,测试就会失败,我不知道为什么。如果总题数小于6,也可以通过。为什么数字在测试中如此重要。
这是一个简单的应用程序,当点击关闭按钮时,只需从列表中删除即可 //测试/favorites_test.dart
Widget createFavoritesScreen() => ChangeNotifierProvider<Favorites>(
create: (context) {
favoritesList = Favorites();
return favoritesList;
},
child: const MaterialApp(
home: FavoritesPage(),
),
);
void addItems() {
for (var i = 0; i < 10; i += 2) {
favoritesList.add(i);
}
}
void main() {
group('Favorites Page Widget Tests', () {
testWidgets('Test if ListView shows up', (tester) async {
await tester.pumpWidget(createFavoritesScreen());
addItems();
await tester.pumpAndSettle();
expect(find.byType(ListView), findsOneWidget);
});
testWidgets('Testing Remove Button', (tester) async {
await tester.pumpWidget(createFavoritesScreen());
addItems();
await tester.pumpAndSettle();
var totalItems = tester.widgetList(find.byIcon(Icons.close)).length;
await tester.tap(find.byIcon(Icons.close).first);
await tester.pumpAndSettle();
expect(tester.widgetList(find.byIcon(Icons.close)).length,
lessThan(totalItems));
expect(find.text('Removed from favorites.'), findsOneWidget);
});
});
}
在
testWidgets 中,根据 tester.view.physicalSize 以大小 (2400,1800) 运行测试。 (不知道为什么测试页显示不全)
经过tester.view.physicalSize = Size(10000, 10000),测试通过。
不要忘记调用tester.view.resetPhysicalSize(),否则会影响后续的 widget 测试。