Bird
Raised Fist0
JUnittesting~15 mins

assertEquals in JUnit - Build an Automation Script

Choose your learning style10 modes available
Verify addition method returns correct sum
Preconditions (1)
Step 1: Call add(2, 3) method
Step 2: Capture the returned result
Step 3: Compare the result with expected value 5
✅ Expected Result: The add method returns 5 when called with inputs 2 and 3
Automation Requirements - JUnit 5
Assertions Needed:
Verify that the actual sum equals the expected sum using assertEquals
Best Practices:
Use @Test annotation for test methods
Use descriptive method names
Keep tests independent and simple
Use assertEquals(expected, actual) with a message for clarity
Automated Solution
JUnit
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;

class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

public class CalculatorTest {

    @Test
    void testAddReturnsCorrectSum() {
        Calculator calculator = new Calculator();
        int result = calculator.add(2, 3);
        assertEquals(5, result, "Addition of 2 and 3 should be 5");
    }
}

This test class CalculatorTest uses JUnit 5 to check the add method of the Calculator class.

The @Test annotation marks the test method testAddReturnsCorrectSum. Inside, it creates a Calculator object, calls add(2, 3), and stores the result.

Then, assertEquals compares the expected value 5 with the actual result. If they match, the test passes; otherwise, it fails and shows the message.

This clear structure helps beginners understand how to write simple unit tests with assertions.

Common Mistakes - 3 Pitfalls
Swapping expected and actual parameters in assertEquals
{'mistake': 'Not using @Test annotation on test methods', 'why_bad': "Without @Test, the test method won't run automatically, so tests are skipped silently.", 'correct_approach': 'Always annotate test methods with @Test to ensure they run.'}
Not providing a failure message in assertEquals
Bonus Challenge

Now add data-driven testing with 3 different pairs of inputs and expected sums

Show Hint

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

  1. Step 1: Understand the role of assertEquals

    assertEquals compares two values: expected and actual.
  2. Step 2: Identify the test behavior

    If the values differ, the test fails, helping find bugs.
  3. Final Answer:

    To check if two values are equal and fail the test if not -> Option A
  4. 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

  1. Step 1: Recall assertEquals method signature with message

    The correct order is: message, expected, actual.
  2. Step 2: Match options with correct order

    assertEquals("Error message", expected, actual); matches this order exactly.
  3. Final Answer:

    assertEquals("Error message", expected, actual); -> Option A
  4. 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

  1. Step 1: Calculate actual value

    3 + 2 equals 5, so actual is 5.
  2. Step 2: Compare expected and actual

    Both expected and actual are 5, so assertEquals passes.
  3. Final Answer:

    Test passes because expected equals actual -> Option C
  4. 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

  1. Step 1: Check parameter types

    First is int 5, second is String "5".
  2. Step 2: Understand assertEquals behavior with different types

    assertEquals compares values and types; int and String differ, so test fails.
  3. Final Answer:

    Test fails because int and String types differ -> Option D
  4. 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

  1. Step 1: Understand assertEquals for lists

    assertEquals compares lists by content if types match.
  2. Step 2: Check options for best practice

    assertEquals("Lists differ", expected, actual); adds a helpful message and uses correct parameter order.
  3. Final Answer:

    assertEquals("Lists differ", expected, actual); -> Option B
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard