Angular Code Coverage (How to measure and use)
Today we're going to show you how to set up code coverage in your Angular project.
If you set up code coverage you will have a realistic understanding of how solid your code is.
And when you test right... you will sleep tight.
By configuring and using the Angular code coverage tool you will consistently ship a stable product.
First of all, code coverage is a percentage of the code that gets tested when we run our suite of Angular tests.
The higher the code coverage result suggests your code base has a lower chance of undetected software bugs - compared to a program with low code coverage.
Some of the benefits of code coverage are:
- Catch bugs before they catch you.
- Refactor your code with confidence.
- A badge of professionalism and quality work.
So let's learn how to use Angular's code coverage tools.
Step 1: Run the code coverage
For a quick start we'll use the code coverage option when running the test.
Like this.
ng test --no-watch --code-coverage
And you should see a code coverage summary when the testing is finished.
You will notice that the summary has 4 main parts.
- Statements
- Branches
- Functions
- Lines
Hereβs what the four metrics mean:
- Statements: These are individual instructions in your code that perform an action. Like assigning a variable. Calling a function. And so forth.
- Branches: These are the conditional branches (e.g.,
if
,else
,switch
) tested. - Functions: The percentage of functions or methods tested.
- Lines: The percentage of individual lines of code tested.
In my case:
- Most statements are tested (85.71%).
- All branches are tested (100%).
- No functions are tested (0%).
- Most lines are tested (83.33%).
Step 2: Inspect the coverage folder
You'll notice that the --code-coverage
flag also generated a folder coverage/project-name
.
Inside this folder is an index.html
file that we'll open in the browser for a deeper understanding of what parts of our code is being tested.
You should see a report like this in the browser.
π π π
You can click on a file to get detailed information about how much of a specific code file is being tested or not.
Step 3: Configure automated code coverage reports
Now that we've looked at our code coverage reports how about we set up a way to be able to quickly see a code coverage report?
To do this, we're going to set up a code coverage badge in our README file. This will let us see at a quick glance how much of the code in our repository is currently tested.
ng generate config karma
We will add a JSON reporter to the reporters
array.
reporters: [
{ type: 'html' },
{ type: 'text-summary' },
{ type: 'json' }
]
Then install the badge generator
npm i coverage-badges-cli --save-dev
And then, we'll generate our badge using an NPM test script.
"test": "ng test --no-watch --code-coverage && coverage-badges --output ./badges/coverage-badge.svg --source ./coverage/<project-name>/coverage-final.json"
And there you have it.
When we use npm run test
we automatically get a generated badge of the test results.
Till next time,
Daniel Kreider - Angular Consultant & Developer