I’ve been working on a big Flutter project for half a year now. In this article I sum up my insights about integration tests at the end of 2021.
The Value of Integration Tests is still Underestimated
Video courses on YouTube or Udemy give only very simple examples — if at all. With books it’s the same. In my opinion, 95% of all courses and books are aimed at beginners. And beginners really do not need integration tests from the start. Unit tests and maybe widget tests are sufficient for small hobby projects.
The matter changes fundamentally if projects are to live longer. Then the effort is worth it, because:
- The QA team is relieved of manual regression testing, which costs a lot of time, effort and frustration. Continous Integration can find broken navigation paths and any differences from previous versions.
- A nightly build can disclose errors that would be undetected.
- New team members can watch the running tests and see, what are the main paths of the app.
Why are they not appreciated?
- Yes, integration tests often have “false failures”. The app got a new feature, a bug was fixed, an “unmockable” service was not available and all this causes failing tests. This is frustrating, escpecially if a merge request is blocked by such a “false failure”.
- Yes, it happens, that the app or the test shows flaky behavior, that means sometimes the test succeeds, sometimes it fails — without an apparent reason.
- Yes, the documentation is not as god as it could be.
- Yes, the shareholders don’t see any immediate progress in the App.
- Yes, it’s sometimes hard to impossible to test automatically, what a QA tester can check easily
Good News: Integration Tests Gain Momentum
In a previous pure iOS native project I already made some experiences with UI tests. Since changing my focus to Flutter in early 2020, I’ve been looking primarily at how tests are supported. I found the old flutter_driver package quite confusing, but this improved a lot with the integration_test…