The first form compares expected and actual values.
The second form adds a message shown if the test fails.
Examples
Checks if sum equals 5.
JUnit
assertEquals(5, sum);
Checks if greeting equals "Hello".
JUnit
assertEquals("Hello", greeting);
Checks sum equals 5 and shows message if not.
JUnit
assertEquals("Sum should be 5", 5, sum);
Sample Program
This test checks if the add method returns 5 when adding 2 and 3.
JUnit
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
public class CalculatorTest {
@Test
public void testAdd() {
Calculator calc = new Calculator();
int result = calc.add(2, 3);
assertEquals(5, result, "2 + 3 should be 5");
}
}
class Calculator {
public int add(int a, int b) {
return a + b;
}
}
OutputSuccess
Important Notes
assertEquals uses equals() method for objects, so it works well with strings and custom objects if equals is overridden.
Order matters: first argument is expected, second is actual result.
Use the message argument to make failures easier to understand.
Summary
assertEquals compares expected and actual values in tests.
It helps catch mistakes by failing tests when values differ.
Adding a message helps explain test failures.
Practice
(1/5)
1. What is the main purpose of assertEquals in JUnit testing?
easy
A. To check if two values are equal and fail the test if not
B. To print values during test execution
C. To skip a test case
D. To create a new test method
Solution
Step 1: Understand the role of assertEquals
assertEquals compares two values: expected and actual.
Step 2: Identify the test behavior
If the values differ, the test fails, helping find bugs.
Final Answer:
To check if two values are equal and fail the test if not -> Option A
Quick Check:
assertEquals checks equality [OK]
Hint: assertEquals fails test if values differ [OK]
Common Mistakes:
Thinking assertEquals prints output
Confusing assertEquals with skipping tests
Using assertEquals to create tests
2. Which of the following is the correct syntax for assertEquals with a message in JUnit?
easy
A. assertEquals("Error message", expected, actual);
B. assertEquals(actual, expected, "Error message");
C. assertEquals(expected, actual, "Error message");
D. assertEquals("Error message", actual, expected);
Solution
Step 1: Recall assertEquals method signature with message
The correct order is: message, expected, actual.
Step 2: Match options with correct order
assertEquals("Error message", expected, actual); matches this order exactly.
Final Answer:
assertEquals("Error message", expected, actual); -> Option A
Quick Check:
Message first, then expected, actual [OK]
Hint: Message comes first in assertEquals with message [OK]
Common Mistakes:
Swapping expected and actual parameters
Placing message last instead of first
Using actual before expected
3. What will happen when this JUnit test runs?
int expected = 5; int actual = 3 + 2; assertEquals(expected, actual);
medium
A. Compilation error due to wrong assertEquals usage
B. Test fails because expected does not equal actual
C. Test passes because expected equals actual
D. Test is skipped automatically
Solution
Step 1: Calculate actual value
3 + 2 equals 5, so actual is 5.
Step 2: Compare expected and actual
Both expected and actual are 5, so assertEquals passes.
Final Answer:
Test passes because expected equals actual -> Option C
Quick Check:
5 equals 5 means pass [OK]
Hint: Calculate actual before comparing [OK]
Common Mistakes:
Assuming 3 + 2 is not 5
Confusing expected and actual values
Thinking assertEquals causes compilation error here
4. Identify the error in this JUnit assertion:
assertEquals(5, "5");
medium
A. Runtime exception thrown
B. No error, test passes
C. Compilation error due to wrong parameter order
D. Test fails because int and String types differ
Solution
Step 1: Check parameter types
First is int 5, second is String "5".
Step 2: Understand assertEquals behavior with different types
assertEquals compares values and types; int and String differ, so test fails.
Final Answer:
Test fails because int and String types differ -> Option D
Quick Check:
Different types cause failure [OK]
Hint: Types must match for assertEquals to pass [OK]
Common Mistakes:
Assuming int 5 equals String "5"
Thinking parameter order is wrong here
Expecting compilation or runtime error
5. You want to test a method that returns a list of strings. Which assertEquals usage **including a custom error message** correctly checks if the returned list matches List.of("a", "b")?
List<String> expected = List.of("a", "b"); List<String> actual = myMethod();
hard
A. assertEquals(expected, actual);
B. assertEquals("Lists differ", expected, actual);
C. assertEquals(expected.size(), actual.size());
D. assertEquals(expected.toString(), actual.toString());
Solution
Step 1: Understand assertEquals for lists
assertEquals compares lists by content if types match.
Step 2: Check options for best practice
assertEquals("Lists differ", expected, actual); adds a helpful message and uses correct parameter order.
Final Answer:
assertEquals("Lists differ", expected, actual); -> Option B
Quick Check:
Message first, then expected and actual [OK]
Hint: Use message first with expected, actual for clarity [OK]
Common Mistakes:
Comparing string representations instead of lists
Only comparing list sizes
Omitting message for clarity
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.