Bird
Raised Fist0
JUnittesting~3 mins

Why @Test annotation in JUnit? - Purpose & Use Cases

Choose your learning style10 modes available
The Big Idea

What if you could catch bugs instantly without running your program by hand every time?

The Scenario

Imagine you have a big Java program and you want to check if each part works correctly. You try running the program and checking results by hand every time you make a change.

The Problem

Manually running the program and checking results is slow and tiring. You might miss errors or forget to test some parts. It's easy to make mistakes and hard to keep track of what you tested.

The Solution

The @Test annotation lets you mark methods as tests. The testing tool runs these tests automatically and tells you if they pass or fail. This saves time and avoids human errors.

Before vs After
✗ Before
public void checkAddition() {
  int result = add(2, 3);
  if (result != 5) {
    System.out.println("Test failed");
  }
}
✓ After
@Test
public void checkAddition() {
  assertEquals(5, add(2, 3));
}
What It Enables

With @Test, you can run many tests quickly and get clear results, making your code more reliable and easier to improve.

Real Life Example

A developer changes a feature and runs all @Test methods to instantly see if anything broke, avoiding bugs before users find them.

Key Takeaways

Manual testing is slow and error-prone.

@Test marks methods to run automatically as tests.

This makes testing faster, safer, and more organized.

Practice

(1/5)
1. What is the main purpose of the @Test annotation in JUnit?
easy
A. To mark a method as a test case that JUnit will run
B. To declare a method as private
C. To specify the return type of a method
D. To import JUnit libraries

Solution

  1. Step 1: Understand the role of @Test

    The @Test annotation tells JUnit which methods are test cases to execute.
  2. Step 2: Eliminate unrelated options

    Options B, C, and D do not relate to marking test methods.
  3. Final Answer:

    To mark a method as a test case that JUnit will run -> Option A
  4. Quick Check:

    @Test marks test methods [OK]
Hint: Remember: @Test means 'run this method as test' [OK]
Common Mistakes:
  • Thinking @Test changes method visibility
  • Confusing @Test with import statements
  • Assuming @Test sets return type
2. Which of the following is the correct syntax for a JUnit test method using @Test?
easy
A. public void testMethod(int x) {}
B. private int testMethod() {}
C. public void testMethod() {}
D. public String testMethod() {}

Solution

  1. Step 1: Recall JUnit test method rules

    Test methods must be public, return void, and take no parameters.
  2. Step 2: Check each option

    public void testMethod() {} matches all rules. Options B, C, and D violate visibility, return type, or parameters.
  3. Final Answer:

    public void testMethod() {} -> Option C
  4. Quick Check:

    Public, void, no params = correct test method [OK]
Hint: Test methods: public + void + no parameters [OK]
Common Mistakes:
  • Making test methods private
  • Adding parameters to test methods
  • Using non-void return types
3. Given the code below, what will be the test result when running with JUnit?
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;

public class SampleTest {
    @Test
    public void checkSum() {
        int result = 2 + 3;
        assertEquals(5, result);
    }
}
medium
A. Runtime exception thrown
B. Test passes successfully
C. Compilation error due to missing return
D. Test fails with assertion error

Solution

  1. Step 1: Analyze the test method logic

    The method calculates 2 + 3 and stores in result, then asserts result equals 5.
  2. Step 2: Check assertion correctness

    Since 2 + 3 is 5, the assertion assertEquals(5, result) will pass.
  3. Final Answer:

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

    2 + 3 = 5, assertion true [OK]
Hint: If assertion matches calculation, test passes [OK]
Common Mistakes:
  • Assuming test fails without checking assertion
  • Confusing compilation errors with test failures
  • Ignoring that test methods return void
4. Identify the error in the following JUnit test method:
import org.junit.jupiter.api.Test;

public class ErrorTest {
    @Test
    private void testHidden() {
        // test code
    }
}
medium
A. Test method must be public, not private
B. Missing return statement in test method
C. Test method should have parameters
D. Missing @BeforeEach annotation

Solution

  1. Step 1: Check method visibility

    JUnit requires test methods to be public so it can access and run them.
  2. Step 2: Validate other method properties

    Test methods must be void and parameterless; private visibility is the error here.
  3. Final Answer:

    Test method must be public, not private -> Option A
  4. Quick Check:

    Test methods must be public [OK]
Hint: Test methods must be public, not private [OK]
Common Mistakes:
  • Making test methods private
  • Adding parameters to test methods
  • Confusing lifecycle annotations with test method requirements
5. You want to write a JUnit test method that checks if a method throws an exception. Which is the correct way to use @Test for this purpose in JUnit 5?
hard
A. Use @Test(expected = Exception.class) annotation parameter
B. Add throws Exception to the test method signature
C. Write a try-catch block without @Test
D. Use @Test with assertThrows() inside the method

Solution

  1. Step 1: Recall JUnit 5 exception testing

    JUnit 5 uses assertThrows() inside @Test methods to check exceptions.
  2. Step 2: Eliminate outdated or incorrect options

    Use @Test(expected = Exception.class) annotation parameter is from JUnit 4 and invalid in JUnit 5. Add throws Exception to the test method signature only declares exception, not tests it. Write a try-catch block without @Test misses @Test.
  3. Final Answer:

    Use @Test with assertThrows() inside the method -> Option D
  4. Quick Check:

    JUnit 5 uses assertThrows() inside @Test [OK]
Hint: JUnit 5 tests exceptions with assertThrows() inside @Test [OK]
Common Mistakes:
  • Using JUnit 4 style @Test(expected=) in JUnit 5
  • Only declaring throws without assertion
  • Not using @Test annotation
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