Skip to Content
Write Good Test Assertions
shortcut

Write Good Test Assertions

by Maximiliano Contieri
November 2024
Beginner
5 pages
4m
English
O'Reilly Media, Inc.
Content preview from Write Good Test Assertions

Write Good Test Assertions

Writing good assertions is critical as they validate whether the behavior of the code meets expectations—not just today, but for as long as the software lives. Let’s get into what makes a good test assertion.

The Structure of a Clean Test

You should structure every test into three key sections: Setup, Exercise, and Assert. In the Setup section, you prepare the necessary environment, initialize objects, and configure any prerequisites required for the test. The Exercise section involves executing the actual code or functionality that you intend to test. Finally, the Assert section is where you verify the outcomes by comparing the actual results with expected values, ensuring the code behaves as intended.

Good assertions are specific, clear to read, declarative, and directly linked to the expected behavior, making it easier to identify and diagnose issues.

Writing Good Assertions

Every test must have a single clear assertion.

Consider this JavaScript example:

 test('should add two numbers', () => {
	const result = add(2, 3);
	// No assertions to verify the result
});

This test doesn’t verify any outcomes. It calls a function but doesn’t check if the result is correct but many test runners will flag them as “risky.”

Test a Single Responsibility at Once

Tests should have a single responsibility and a clear reason to fail.

This is a test with multiple responsibilities:

test('should add ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Unit Testing Principles, Practices, and Patterns

Unit Testing Principles, Practices, and Patterns

Vladimir Khorikov
The Art of Unit Testing, Third Edition

The Art of Unit Testing, Third Edition

Roy Osherove, Vladimir Khorikov
Write Clean Code from Scratch

Write Clean Code from Scratch

Maximiliano Contieri

Publisher Resources

ISBN: 9781098172671