Bird
Raised Fist0
JUnittesting~10 mins

assertThrows usage in JUnit - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to assert that a NullPointerException is thrown.

JUnit
assertThrows([1].class, () -> { throw new NullPointerException(); });
Drag options to blanks, or click blank then click option'
AIllegalArgumentException
BIndexOutOfBoundsException
CArithmeticException
DNullPointerException
Attempts:
3 left
💡 Hint
Common Mistakes
Using the wrong exception class.
Not using the .class suffix.
2fill in blank
medium

Complete the code to assert that an ArithmeticException is thrown when dividing by zero.

JUnit
assertThrows([1].class, () -> { int result = 10 / 0; });
Drag options to blanks, or click blank then click option'
ANullPointerException
BNumberFormatException
CArithmeticException
DIllegalStateException
Attempts:
3 left
💡 Hint
Common Mistakes
Using NullPointerException instead of ArithmeticException.
Forgetting to use .class after the exception name.
3fill in blank
hard

Fix the error in the assertThrows usage to correctly check for IndexOutOfBoundsException.

JUnit
assertThrows([1], () -> { List<String> list = List.of(); list.get(1); });
Drag options to blanks, or click blank then click option'
AIndexOutOfBoundsException()
BIndexOutOfBoundsException.class
Cnew IndexOutOfBoundsException()
DIndexOutOfBoundsException
Attempts:
3 left
💡 Hint
Common Mistakes
Passing the exception class name without .class.
Passing a new exception instance instead of the class.
4fill in blank
hard

Fill both blanks to assert that a NumberFormatException is thrown when parsing an invalid number.

JUnit
assertThrows([1].class, () -> { Integer.parseInt([2]); });
Drag options to blanks, or click blank then click option'
ANumberFormatException
B"abc"
C"123"
DIllegalArgumentException
Attempts:
3 left
💡 Hint
Common Mistakes
Using a valid number string like "123" which does not throw.
Using the wrong exception class.
5fill in blank
hard

Fill all three blanks to assert that an IllegalArgumentException is thrown with a specific message.

JUnit
IllegalArgumentException exception = assertThrows([1].class, () -> { throw new IllegalArgumentException([2]); });
assertEquals([3], exception.getMessage());
Drag options to blanks, or click blank then click option'
AIllegalArgumentException
B"Invalid input"
DNullPointerException
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different exception class.
Mismatching the exception message string.

Practice

(1/5)
1. What is the primary purpose of assertThrows in JUnit testing?
easy
A. To check if a specific exception is thrown by a code block
B. To verify the return value of a method
C. To measure the execution time of a method
D. To assert that no exceptions are thrown

Solution

  1. Step 1: Understand the role of assertThrows

    assertThrows is used to test if a particular exception occurs when running a piece of code.
  2. Step 2: Compare with other assertions

    Other assertions check values or states, but assertThrows specifically checks for exceptions.
  3. Final Answer:

    To check if a specific exception is thrown by a code block -> Option A
  4. Quick Check:

    assertThrows = Exception check [OK]
Hint: assertThrows checks exceptions thrown by code [OK]
Common Mistakes:
  • Confusing assertThrows with assertEquals
  • Using assertThrows to check return values
  • Expecting assertThrows to measure performance
2. Which of the following is the correct syntax to use assertThrows in JUnit 5?
easy
A. assertThrows(Exception.class, () -> methodCall());
B. assertThrows(() -> methodCall(), Exception.class);
C. assertThrows(methodCall(), Exception.class);
D. assertThrows(Exception.class, methodCall());

Solution

  1. Step 1: Recall assertThrows method signature

    The correct syntax is assertThrows(Exception.class, Executable) where Executable is a lambda or method reference.
  2. Step 2: Analyze options

    assertThrows(Exception.class, () -> methodCall()); matches the correct syntax: exception class first, then lambda expression.
  3. Final Answer:

    assertThrows(Exception.class, () -> methodCall()); -> Option A
  4. Quick Check:

    assertThrows(Exception.class, lambda) = correct syntax [OK]
Hint: Exception class first, then lambda in assertThrows [OK]
Common Mistakes:
  • Swapping parameters order
  • Passing method call instead of lambda
  • Omitting lambda expression
3. What will be the result of this JUnit 5 test code?
assertThrows(IllegalArgumentException.class, () -> {
  throw new IllegalArgumentException("Invalid argument");
});
medium
A. Test passes but ignores the exception message
B. Test fails because no exception is thrown
C. Test fails due to a syntax error
D. Test passes because the expected exception is thrown

Solution

  1. Step 1: Check the exception thrown

    The lambda throws IllegalArgumentException, which matches the expected exception class.
  2. Step 2: Understand assertThrows behavior

    assertThrows passes if the expected exception is thrown during execution.
  3. Final Answer:

    Test passes because the expected exception is thrown -> Option D
  4. Quick Check:

    Thrown exception matches expected = pass [OK]
Hint: assertThrows passes if expected exception is thrown [OK]
Common Mistakes:
  • Thinking test fails if exception is thrown
  • Confusing exception message with test result
  • Assuming syntax error without checking code
4. Identify the error in this JUnit 5 test snippet:
assertThrows(NullPointerException.class, () -> {
  String s = null;
  s.length();
});
medium
A. Exception class should be RuntimeException.class
B. Lambda syntax is incorrect
C. No error; test will pass as NullPointerException is thrown
D. s.length() does not throw NullPointerException

Solution

  1. Step 1: Analyze the code inside lambda

    Calling s.length() on a null string throws NullPointerException.
  2. Step 2: Check assertThrows parameters

    Expected exception is NullPointerException.class, matching the thrown exception.
  3. Final Answer:

    No error; test will pass as NullPointerException is thrown -> Option C
  4. Quick Check:

    NullPointerException thrown and expected = pass [OK]
Hint: NullPointerException thrown matches expected exception [OK]
Common Mistakes:
  • Assuming s.length() throws different exception
  • Thinking lambda syntax is wrong
  • Confusing exception class with superclass
5. Consider this test method:
void testDivideByZero() {
  ArithmeticException thrown = assertThrows(ArithmeticException.class, () -> {
    int result = 10 / 0;
  });
  assertEquals("/ by zero", thrown.getMessage());
}

What does this test verify beyond just exception throwing?
hard
A. It verifies the method returns zero
B. It verifies the exception message is exactly "/ by zero"
C. It verifies no exception is thrown
D. It verifies the exception type is RuntimeException

Solution

  1. Step 1: Understand assertThrows return value

    assertThrows returns the thrown exception object, here stored in thrown.
  2. Step 2: Analyze the assertEquals check

    The test checks that the exception message equals "/ by zero", verifying the exact error message.
  3. Final Answer:

    It verifies the exception message is exactly "/ by zero" -> Option B
  4. Quick Check:

    Exception message checked = It verifies the exception message is exactly "/ by zero" [OK]
Hint: assertThrows returns exception to check message [OK]
Common Mistakes:
  • Thinking it checks return value of division
  • Assuming exception type is RuntimeException
  • Ignoring the message assertion
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