When it comes to testing Flutter applications, running tests with coverage is an important step. This allows developers to measure how well their tests cover the code and find areas that need further testing. In this post, we will look at how to run Flutter tests with coverage and explore different tools to create detailed reports based on the coverage data.
Running tests with coverage
Running tests with coverage in Flutter is a straightforward process. By executing the command
flutter test --coverage, we can run our tests and collect coverage information.
The command creates a folder called
coverage in our project, which contains a file called
lcov.info. This file holds the coverage data, but it may not be easy to understand on its own.
SF:lib\main.dart DA:3,0 DA:4,0 DA:8,1 DA:10,0 DA:20,2 DA:22,1 DA:23,1 DA:27,1 DA:28,3 DA:32,3 DA:39,0 LF:11 LH:7 end_of_record
Fortunately, there are tools available to generate more helpful reports. Let us explore a few of them.
1. Using the LCOV viewer
One easy option is to use the LCOV viewer website. Simply drag and drop the
lcov.info file into the viewer, and it will generate a report that is both informative and visually appealing.
2. Using the test_cov_console package
Another approach is to use the test_cov_console package. To get started, install the package by running
flutter pub add test_cov_console --dev.
Make sure that the package is included under the
dev_dependencies section in your
dev_dependencies: flutter_test: sdk: flutter test_cov_console: ^0.2.2
Once the package is installed, you can generate a report in your command-line interface by running
dart run test_cov_console.
If you prefer a CSV file, add the
-c flag like this:
dart run test_cov_console -c.
Depending on your IDE it is possible to display the CSV file like the screenshot above. This gives a clear report, however, the visual appearance of the LCOV viewer looks better. However, this approach is useful when you do not have internet access or if you want a simple report.
3. Installing LCOV locally on Windows
This last approach is specifically for Windows machines.
To get started we need to install Chocolatey, we can do this by opening our command prompt as Administrator and executing the following command:
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
Your Command Prompt should give you a different message, I am getting this message because I already have Chocolatey installed.
If you run into any issues see their installation documentation.
Now that we have lcov installed we need to navigate to our project inside our Command Prompt. Use
cd followed by your full project path like so:
After we have navigated to our project we can execute the following command:
perl C:\ProgramData\chocolatey\lib\lcov\tools\bin\genhtml -o coverage\html coverage\lcov.info to generate our reports using lcov.
If we check the
coverage folder of our project you will see that we generated a bunch of files.
index.html is the file that contains our report. You can open this file inside the browser.
There are 3 ways to open it in the browser:
- By using your IDE;
- By navigating to the files using File Explorer and clicking on them; (You might have to right-click the file and select Open with, followed by clicking your preferred browser)
- By using the Command Prompt:
When we open the file in the browser you can see that we get a very nice report:
But that is not all, we also generated a coverage report for the file that we have tested. In my case, this is the
main.dart file. As you can see in the last screenshot of the Command Prompt, I also opened
As you can see this is a very convenient report showing you exactly which lines are and are not covered.
In this post, we explored different methods to run Flutter tests with coverage and generate informative reports.
We learned that the LCOV viewer website provides an easy way to drop the
lcov.info file and obtain visually appealing reports. Additionally, the test_cov_console package allows us to generate reports in the command-line interface or as CSV files, which is useful when internet access is limited or when a simpler report is enough.
For Windows users, we discussed installing Chocolatey and using it to install the lcov package. This enables the generation of detailed coverage reports through specific commands in the Command Prompt.