A Sample app that shows different types of testing in Flutter.
This particular sample uses the Provider package but any other state management approach would do.
Show how to perform:
- Widget Testing,
- Integration Testing,
- Performance Testing, and
- State Management Testing using the Provider package.
- Navigate to the project's root folder using command line and follow the instructions below.
The Flutter SDK can run unit tests and widget tests in a virtual machine, without the need of a physical device or emulator.
- To run all the test files in the
test/
directory in one go, runflutter test
. - To run a particular test file, run
flutter test test/<file_path>
- Widget Tests:
- Run
flutter run test/<file_path>
- Run
- Integration Tests:
- Run
flutter test integration_test
to run all the integration tests with a single command. - Alternatively, you can run
flutter drive --driver=integration_test/driver.dart --target=integration_test/app_test.dart
to run them separately. You can also provide custom driver files with this command.
- Run
- Performance Tests:
- Run
flutter drive --driver=integration_test/perf_driver.dart --target=integration_test/perf_test.dart --profile --trace-startup
- Using a physical device and running performance tests in profile mode is recommended.
- The
--trace-startup
option is used to avoid flushing older timeline events when the timeline gets long.
- Run
- State Management Tests:
- For testing state using Flutter Integration Tests
- Run
flutter drive --driver=integration_test/driver.dart --target=integration_test/state_mgmt_test.dart
- Run
- For testing state using Flutter Integration Tests
- Install the
lcov
tool:- For MacOS, run
brew install lcov
- For Linux, run
sudo apt install lcov
- For MacOS, run
- Run tests with coverage:
flutter test --coverage
- Convert
lcov.info
into readable html:- Run
genhtml coverage/lcov.info -o coverage/index
- Run
- Open
coverage/index/index.html
in your preferred browser.
Note that tools like GitHub Actions can't run tests on a physical device, which is required to run integration tests. Instead, you can use Firebase Test Lab, Codemagic or any platform of your choice to do that.
If you have a general question about testing in Flutter, the best places to go are:
If you run into an issue with the sample itself, please file an issue.