0
0
Fluttermobile~20 mins

Test coverage in Flutter - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Flutter Test Coverage Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
ui_behavior
intermediate
2:00remaining
What is the output of this Flutter widget test?
Consider this Flutter widget test code. What will the test find when it runs?
Flutter
testWidgets('Finds a Text widget with Hello', (WidgetTester tester) async {
  await tester.pumpWidget(MaterialApp(home: Scaffold(body: Text('Hello'))));
  final textFinder = find.text('Hello');
  expect(textFinder, findsOneWidget);
});
AThe test fails because the Text widget is not found.
BThe test passes because the Text widget with 'Hello' is found exactly once.
CThe test fails because there are multiple Text widgets with 'Hello'.
DThe test throws a runtime error due to missing MaterialApp.
Attempts:
2 left
💡 Hint
Remember that MaterialApp provides necessary context for Text widgets.
lifecycle
intermediate
2:00remaining
What is the value of counter after this test runs?
Given this Flutter widget test that increments a counter, what is the final value of counter?
Flutter
int counter = 0;

class CounterButton extends StatelessWidget {
  final VoidCallback onPressed;
  CounterButton({required this.onPressed});

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(onPressed: onPressed, child: Text('Increment'));
  }
}

testWidgets('Counter increments on button tap', (WidgetTester tester) async {
  await tester.pumpWidget(MaterialApp(home: CounterButton(onPressed: () { counter++; })));
  await tester.tap(find.byType(ElevatedButton));
  await tester.pump();
});
Acounter is 1 after the test runs.
Bcounter is 0 because the button was not tapped.
Ccounter is 2 because the button was tapped twice.
Dcounter is null due to uninitialized variable.
Attempts:
2 left
💡 Hint
Check how many times tester.tap is called.
📝 Syntax
advanced
2:00remaining
What error does this Flutter test code produce?
Analyze this Flutter test code snippet. What error will it cause when run?
Flutter
testWidgets('Missing await on pumpWidget', (WidgetTester tester) {
  tester.pumpWidget(MaterialApp(home: Text('Test')));
  final textFinder = find.text('Test');
  expect(textFinder, findsOneWidget);
});
ANo error; test passes successfully.
BTest fails with a MissingPluginException error.
CTest fails because pumpWidget is not awaited, causing a test failure.
DTest fails with a syntax error due to missing semicolon.
Attempts:
2 left
💡 Hint
pumpWidget returns a Future and should be awaited in async tests.
🔧 Debug
advanced
2:00remaining
Why does this widget test fail to find the button?
This test tries to find a button but fails. What is the cause?
Flutter
testWidgets('Finds button by key', (WidgetTester tester) async {
  await tester.pumpWidget(MaterialApp(home: Scaffold(body: ElevatedButton(key: Key('btn'), onPressed: () {}, child: Text('Tap me')))));
  final buttonFinder = find.byKey(Key('button'));
  expect(buttonFinder, findsOneWidget);
});
AThe key used in find.byKey does not match the button's key.
BThe ElevatedButton is not wrapped in a MaterialApp.
CThe test does not await tester.pumpWidget.
DThe button's child Text widget is missing.
Attempts:
2 left
💡 Hint
Check the key strings used in the widget and the finder.
🧠 Conceptual
expert
2:00remaining
Which option best describes test coverage in Flutter?
Select the statement that correctly explains test coverage in Flutter development.
ATest coverage refers to the number of devices a Flutter app supports.
BTest coverage is the time taken to run all tests in a Flutter project.
CTest coverage is the number of UI widgets visible on the screen during testing.
DTest coverage measures the percentage of code executed by automated tests, helping identify untested parts.
Attempts:
2 left
💡 Hint
Think about what 'coverage' means in software testing.