Bird
Raised Fist0
JUnittesting~15 mins

First JUnit test - Build an Automation Script

Choose your learning style10 modes available
Verify addition method returns correct sum
Preconditions (2)
Step 1: Create a class Calculator with a method add(int a, int b) that returns the sum of a and b
Step 2: Create a JUnit test class CalculatorTest
Step 3: Write a test method testAdd that calls add(2, 3)
Step 4: Assert that the result is 5
✅ Expected Result: The test passes confirming that add(2, 3) returns 5
Automation Requirements - JUnit 5
Assertions Needed:
Assert that the returned sum equals the expected value
Best Practices:
Use @Test annotation for test methods
Use assertEquals for comparing expected and actual results
Keep test methods simple and focused
Name test methods clearly to describe what they test
Automated Solution
JUnit
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;

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

public class CalculatorTest {
    @Test
    void testAdd() {
        Calculator calculator = new Calculator();
        int result = calculator.add(2, 3);
        assertEquals(5, result, "2 + 3 should equal 5");
    }
}

This code defines a simple Calculator class with an add method that sums two integers.

The CalculatorTest class contains a test method testAdd annotated with @Test, which JUnit 5 uses to identify test methods.

Inside testAdd, we create a Calculator instance, call add(2, 3), and store the result.

We then use assertEquals to check if the result is 5. If it is, the test passes; otherwise, it fails.

This structure follows best practices by keeping the test focused, using clear naming, and proper JUnit 5 annotations and assertions.

Common Mistakes - 4 Pitfalls
{'mistake': 'Forgetting to add the @Test annotation', 'why_bad': "JUnit will not recognize the method as a test, so it won't run", 'correct_approach': 'Always annotate test methods with @Test'}
Using assertEquals with parameters reversed (actual, expected)
Not importing static assertions
Writing multiple assertions in one test without clear purpose
Bonus Challenge

Now add data-driven testing with 3 different input pairs for the add method

Show Hint

Practice

(1/5)
1. What is the main purpose of a JUnit test method marked with @Test?
easy
A. To check if a piece of code works as expected
B. To create a new Java class
C. To print output to the console
D. To declare a variable

Solution

  1. Step 1: Understand the role of @Test annotation

    The @Test annotation marks a method as a test method in JUnit, meaning it will be run to check code behavior.
  2. Step 2: Identify the purpose of test methods

    Test methods verify if the code produces the expected results, helping find bugs or confirm correctness.
  3. Final Answer:

    To check if a piece of code works as expected -> Option A
  4. Quick Check:

    JUnit @Test marks test methods [OK]
Hint: JUnit tests verify code correctness using @Test [OK]
Common Mistakes:
  • Thinking @Test creates classes
  • Confusing test methods with print statements
  • Using @Test to declare variables
2. Which of the following is the correct way to write a simple JUnit 5 test method?
easy
A. public void testMethod() { assertEquals(5, 2 + 3); }
B. void testMethod() { assertEquals(5, 2 + 3); }
C. @Test public void testMethod() { assertEquals(5, 2 + 3); }
D. @Test void testMethod() { System.out.println(5); }

Solution

  1. Step 1: Check for @Test annotation

    JUnit 5 requires the @Test annotation to mark a method as a test.
  2. Step 2: Verify method signature and assertion

    The method should be public void with an assertion like assertEquals(expected, actual). @Test public void testMethod() { assertEquals(5, 2 + 3); } matches this.
  3. Final Answer:

    @Test public void testMethod() { assertEquals(5, 2 + 3); } -> Option C
  4. Quick Check:

    JUnit test method needs @Test and assertion [OK]
Hint: Always use @Test before test methods [OK]
Common Mistakes:
  • Missing @Test annotation
  • Wrong method visibility or return type
  • Using print statements instead of assertions
3. What will be the result of running this JUnit test?
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;

public class SampleTest {
  @Test
  void additionTest() {
    assertEquals(10, 5 + 5);
  }
}
medium
A. Runtime exception occurs
B. Test passes successfully
C. Compilation error due to missing import
D. Test fails with assertion error

Solution

  1. Step 1: Analyze the assertion

    The test asserts that 5 + 5 equals 10, which is true.
  2. Step 2: Check for syntax and imports

    All necessary imports and syntax are correct, so the test will run without errors.
  3. Final Answer:

    Test passes successfully -> Option B
  4. Quick Check:

    Correct assertion means test passes [OK]
Hint: True assertions make tests pass [OK]
Common Mistakes:
  • Assuming test fails when assertion is true
  • Missing static import for assertions
  • Confusing compilation errors with runtime errors
4. Identify the error in this JUnit test code:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class CalcTest {
  @Test
  public void testSum() {
    int result = 2 + 2;
    assertEquals(5, result);
  }
}
medium
A. The assertion expects wrong value causing test failure
B. Missing @Test annotation
C. Method should return int, not void
D. No import for assertEquals

Solution

  1. Step 1: Check the assertion values

    The test expects 5 but the actual result is 4 (2 + 2), so the assertion will fail.
  2. Step 2: Verify annotations and imports

    The @Test annotation and imports are correct, so no syntax errors exist.
  3. Final Answer:

    The assertion expects wrong value causing test failure -> Option A
  4. Quick Check:

    Assertion mismatch causes test failure [OK]
Hint: Check expected vs actual values in assertions [OK]
Common Mistakes:
  • Ignoring assertion expected value
  • Thinking missing annotation causes failure here
  • Confusing method return types in tests
5. You want to write a JUnit test that checks if a method multiply(int a, int b) returns 0 when one input is 0. Which test method is correct?
hard
A. @Test public void testMultiplyZero() { assertEquals(5, multiply(0, 5)); }
B. public void testMultiplyZero() { assertEquals(0, multiply(0, 5)); }
C. @Test public int testMultiplyZero() { return multiply(0, 5); }
D. @Test public void testMultiplyZero() { assertEquals(0, multiply(0, 5)); }

Solution

  1. Step 1: Confirm @Test annotation and method signature

    The test method must be annotated with @Test and return void. @Test public void testMultiplyZero() { assertEquals(0, multiply(0, 5)); } meets this.
  2. Step 2: Check assertion correctness

    The method should assert that multiplying by zero returns zero. @Test public void testMultiplyZero() { assertEquals(0, multiply(0, 5)); } asserts assertEquals(0, multiply(0, 5)), which is correct.
  3. Final Answer:

    @Test public void testMultiplyZero() { assertEquals(0, multiply(0, 5)); } -> Option D
  4. Quick Check:

    Use @Test, void method, correct assertion [OK]
Hint: Test methods need @Test, void, and correct assertions [OK]
Common Mistakes:
  • Omitting @Test annotation
  • Using wrong return type in test method
  • Asserting wrong expected value
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