Follow the AAA Pattern

Learn about making effective tests by following the AAA pattern.

We'll cover the following

When we write tests, we visually organize them into three chunks: arrange, act, and assert, also known as triple-A (AAA).

public void answersArithmeticMeanOfTwoNumbers() {
   // Arrange
   ScoreCollection collection = new ScoreCollection();
   collection.add(() -> 5);
   collection.add(() -> 7);
   // Act
   int actualResult = collection.arithmeticMean();
   // Assert
   assertThat(actualResult, equalTo(6));

Previously, we added comments to identify each of the chunks explicitly, but these comments add no value once we understand the AAA acronym.

AAA is a part of just about every test we’ll write.


Before we execute the code we’re trying to test, ensure that the system is in a proper state by creating objects, interacting with them, calling other APIs, and so on. In some rare cases, we won’t arrange anything because the system is already in the state we need.


We then need to exercise the code we want to test, usually by calling a single method.


Then we verify that the exercised code behaved as expected. This can involve inspecting the exercised code’s return value or the new state of any objects involved. It can also involve verifying that interactions between the tested code and other objects took place.

The blank lines that separate each portion of a test are indispensable visual reinforcement to help us understand a test even more quickly.


If running the test results in any resources being allocated, make sure that they get cleaned up.

Get hands-on with 1200+ tech skills courses.