关于flutter中单元测试的一个小问题

问题描述 投票:0回答:1
我正在关注

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); }); }); }
    
flutter flutter-unittest
1个回答
0
投票
终于找到解决办法了。

testWidgets 中,根据 tester.view.physicalSize 以大小 (2400,1800) 运行测试。 (不知道为什么测试页显示不全)

经过

tester.view.physicalSize = Size(10000, 10000),测试通过。

不要忘记调用

tester.view.resetPhysicalSize(),否则会影响后续的 widget 测试。

© www.soinside.com 2019 - 2024. All rights reserved.