We have some very exciting testing news to share! A few months ago, our teammate Jorge developed a comprehensive Lesson on Flutter Testing for Caster.IO. While Caster.IO has since ceased operations, we are very fortunate to be the new home for hosting Jorge’s Flutter testing content. The best part is: it’s now free!
We are very excited to make this content available to the developer community because we strongly believe that testing is a crucial part of the development process. It can make or break your application — lack of tests or offloading testing to a separate development team could lead to low-quality applications and last minute scrambles to squash bugs before launch. In contrast, integrating testing into the development process can increase confidence in your codebase and ensure that your app is able to ship at any point. This course will provide a nice foundation for Flutter developers looking to learn the fundamentals of testing, or serve as a handy reference for more experienced developers.
We plan to release the full course in three batches over the next few weeks according to the below schedule. You can view all of the content on this YouTube playlist.
Testing Fundamentals of Flutter Tutorial Schedule
Week 1
Lesson 1: What is the difference between unit testing, widget testing, and integration testing?
Lesson 2: Writing your first unit test
Lesson 3: Running your test from the terminal
Lesson 4: The structure of a good test
Lesson 5: Using expect() in your tests
Lesson 6: All you need to know about Matchers
Lesson 7: Grouping your tests using the group() function
Lesson 8: Testing code that throws an Error or an Exception
Lesson 9: Sharing code between tests with setUp() and tearDown()
Week 2
Lesson 10: Testing Futures
Lesson 11: Testing Streams
Lesson 12: Writing your first widget test
Lesson 13: The difference between pumpWidget(), pump(), and pumpAndSettle()
Lesson 14: Finding a widget in your widget tree using CommonFinders
Lesson 15: Interacting with your widgets using WidgetTester
Lesson 16: Verifying your widget tests using a Matcher from flutter_test
Lesson 17: Testing smaller widgets in isolation
Week 3
Lesson 18: Controlling the behavior of your dependencies using mockito
Lesson 19: Stubbing synchronous methods with mockito
Lesson 20: Stubbing asynchronous methods with mockito
Lesson 21: Verifying interactions with mockito
Lesson 22: Using golden files to verify pixel-perfect widgets
Lesson 23: Collecting code coverage from your tests
Lesson 24: Running integration tests with flutter_driver
Lesson 25: Taking automated screenshots of your application
Lesson 26: Running your tests on GitHub Actions
Lesson 27: Using Codemagic for your CI/CD needs