When it comes to mobile apps, automated tests play a very important role in app maintenance. So, how do you write tests in Flutter?
As you would expect from a modern framework, Flutter offers both unit and integration tests. But it also offers something else: widget tests.
Widget tests are in between unit and integration. Like a unit test, they run on a simpler test environment (whereas integration tests run on an emulator or device). But they can actually test the UI. You can write a widget test that taps on a button.
With the Android SDK, I write UI tests with Espresso. It works well but the tests take a long time to run. It’s not a problem with CI, as we can use some good sharding libraries. But while I develop, I often run a subset on my local machine, to verify my work, and I get frustrated.
Therefore, I find the concept of widget tests very welcome. It will reduce the number of integration tests on a production app, moving some of them to widget tests.
In this code tutorial, we will create an app with a list page and a details page. On the details page, we can select/unselect an item. Its selected status is shown on the list page via a different background colour.
Then, we will write unit and widget tests to verify the behaviour of the app.
Continue reading “Flutter widget tests: a practical example”