Automating Unit Testing for Your Flutter Project with GitHub Actions

Reme Le Hane
4 min readFeb 20, 2023

In the world of software development, ensuring the quality and reliability of your code is paramount. One way to achieve this is through automated unit testing. By automating the process of running tests on your code, you can catch issues early, prevent broken code from going into production, and improve overall code quality. In this article, we will explore how you can use GitHub Actions to automate unit testing for your Flutter project.

What is GitHub Actions?

GitHub Actions is a powerful workflow automation tool provided by GitHub. It allows you to define custom workflows that can be triggered by various events, such as code pushes, pull requests, or manual triggers. With GitHub Actions, you can automate tasks and processes within your software development workflow, including building, testing, and deploying your code.

Setting Up the Workflow

To get started with automating unit testing for your Flutter project, you’ll need to define a workflow in your GitHub repository. The workflow is written in YAML format and consists of a series of steps to be executed. Let’s take a look at an example workflow:Now let’s take a closer look at each step in the workflow and understand what it does.

name: Flutter Testing
on:
workflow_dispatch:
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.4
- uses: subosito/flutter-action@v1.5.3
- name: Install packages
run: flutter pub get
- name: Run generator
run: flutter pub run build_runner build
- name: Run test
run: flutter test test

Step 1: Checkout the Code

The first step in the workflow is to check out the code into the instance of the action. This is done using the actions/checkout action:

- uses: actions/checkout@v2.3.4

By checking out the code, we ensure that the subsequent steps have access to the latest version of the codebase.

Step 2: Installing Flutter

Since we are working with a Flutter project, we need to install Flutter into the instance. This is done using the subosito/flutter-action action:

- uses: subosito/[email protected]

By default, this action installs the latest stable release of Flutter. However, you can configure it to use a different release or even pin it to a specific version.

Step 3: Installing Packages

Next, we need to install all the required packages for our Flutter project. This is done by running the following command:

- name: Install packages run: flutter pub get

This step ensures that all the necessary dependencies are installed and ready for testing.

Step 4: Running Code Generation (Optional)

If your project makes use of code generation, you can include a step to run the code generator. This step is optional and can be skipped if your project doesn’t require code generation. Here’s an example:

- name: Run generator 
run: flutter pub run build_runner build

Running the code generator will generate code based on annotations in your project, such as serializers, routes, or database models.

Step 5: Running Unit Tests

Finally, we come to the most important step-running the unit tests for your Flutter project. This is done using the following command:

- name: Run test 
run: flutter test test

This command runs all the tests located in the test directory of your project. You can customize the path if your tests are located in a different directory.

Running the Workflow

Once you have defined your workflow, it will be automatically triggered whenever a pull request is made against the main branch or manually triggered using the GitHub Actions interface. The workflow will run on the specified environment (in this case, ubuntu-latest) and execute each step in the defined order.

The time it takes to run the automated tests will depend on the size and complexity of your project. Smaller projects with a handful of files may complete in just over a minute, while larger projects with thousands of files and extensive test coverage may take several minutes to complete.

Conclusion

Automating unit testing for your Flutter project using GitHub Actions is a simple yet powerful way to ensure code quality and prevent issues from reaching production. By defining a workflow and specifying the necessary steps, you can easily run tests on your code with every push or pull request. This helps catch bugs early, improves overall code quality, and gives you confidence in the reliability of your codebase.

If you have any questions, comments, or improvements, feel free to drop a comment below. Happy testing and enjoy your Flutter development journey!

Originally published at https://remelehane.dev on February 20, 2023.

--

--

Reme Le Hane

Runner, Developer, Gamer. | Lead Frontend Engineer at Loop with 14 years Front-End Experience & ~4yrs Flutter. | React Flutter Javascript Dart