Bird
Raised Fist0
JUnittesting~10 mins

assertNull and assertNotNull in JUnit - Test Execution Trace

Choose your learning style10 modes available
Test Overview

This test checks if a method returns null or a non-null object as expected. It uses assertNull to verify a null result and assertNotNull to verify a non-null result.

Test Code - JUnit 5
JUnit
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;

class UserService {
    String findUserById(int id) {
        if (id == 0) return null;
        return "User" + id;
    }
}

public class UserServiceTest {
    UserService service = new UserService();

    @Test
    void testFindUserByIdReturnsNull() {
        String result = service.findUserById(0);
        assertNull(result, "Expected null when user ID is 0");
    }

    @Test
    void testFindUserByIdReturnsNotNull() {
        String result = service.findUserById(1);
        assertNotNull(result, "Expected non-null when user ID is 1");
    }
}
Execution Trace - 8 Steps
StepActionSystem StateAssertionResult
1Test starts for testFindUserByIdReturnsNullJUnit test runner initialized—PASS
2Calls findUserById with id=0Method returns null—PASS
3assertNull checks that result is nullResult is nullassertNull(result)PASS
4Test ends for testFindUserByIdReturnsNullTest passed—PASS
5Test starts for testFindUserByIdReturnsNotNullJUnit test runner initialized—PASS
6Calls findUserById with id=1Method returns "User1"—PASS
7assertNotNull checks that result is not nullResult is "User1"assertNotNull(result)PASS
8Test ends for testFindUserByIdReturnsNotNullTest passed—PASS
Failure Scenario
Failing Condition: assertNull fails if the method returns a non-null value when null is expected, or assertNotNull fails if the method returns null when a non-null value is expected.
Execution Trace Quiz - 3 Questions
Test your understanding
What does assertNull verify in the test?
AThat the returned value is null
BThat the returned value is not null
CThat the returned value equals "User1"
DThat the method throws an exception
Key Result
Use assertNull to verify that a method returns null when expected, and assertNotNull to verify it returns a valid object. This helps catch unexpected null or non-null values early.

Practice

(1/5)
1. What does the JUnit method assertNull(object) verify in a test?
easy
A. That the object is not null (has a value)
B. That the object is null (has no value)
C. That the object is an instance of a class
D. That the object equals another object

Solution

  1. Step 1: Understand assertNull purpose

    The method assertNull checks if the given object is null, meaning it has no value assigned.
  2. Step 2: Compare options with definition

    That the object is null (has no value) matches the definition exactly, while others describe different checks.
  3. Final Answer:

    That the object is null (has no value) -> Option B
  4. Quick Check:

    assertNull = checks null [OK]
Hint: assertNull means value must be null to pass [OK]
Common Mistakes:
  • Confusing assertNull with assertNotNull
  • Thinking assertNull checks object type
  • Assuming assertNull compares equality
2. Which of the following is the correct syntax to assert that an object user is NOT null in JUnit?
easy
A. assertNotNull(user);
B. assertNull(user);
C. assertNotNull user;
D. assertNotNull(user == null);

Solution

  1. Step 1: Identify correct method usage

    The correct syntax calls assertNotNull as a method with parentheses and the object as argument.
  2. Step 2: Check each option

    assertNotNull(user); uses correct method call syntax. assertNull(user); uses assertNull which is opposite. assertNotNull user; misses parentheses. assertNotNull(user == null); passes a boolean expression, which is incorrect.
  3. Final Answer:

    assertNotNull(user); -> Option A
  4. Quick Check:

    assertNotNull(object) needs parentheses [OK]
Hint: assertNotNull requires parentheses around the object [OK]
Common Mistakes:
  • Omitting parentheses in method call
  • Using assertNull instead of assertNotNull
  • Passing boolean expressions instead of objects
3. Consider the following JUnit test snippet:
String name = null;
assertNull(name);
name = "Alice";
assertNotNull(name);

What will be the result of running this test?
medium
A. The test will fail at assertNotNull(name)
B. The test will fail at assertNull(name)
C. The test will pass successfully
D. The test will throw a NullPointerException

Solution

  1. Step 1: Analyze first assertion

    Initially, name is null, so assertNull(name) passes.
  2. Step 2: Analyze second assertion

    Then name is assigned "Alice", which is not null, so assertNotNull(name) passes.
  3. Final Answer:

    The test will pass successfully -> Option C
  4. Quick Check:

    assertNull(null) and assertNotNull(non-null) pass [OK]
Hint: assertNull passes if null; assertNotNull passes if not null [OK]
Common Mistakes:
  • Assuming assertNull fails if variable is null
  • Thinking assertNotNull fails with non-null value
  • Expecting exceptions from these assertions
4. Identify the error in this JUnit test code:
Object obj = new Object();
assertNull(obj);
medium
A. No error; test will pass
B. Runtime error: NullPointerException
C. Syntax error: missing semicolon
D. assertNull fails because obj is not null

Solution

  1. Step 1: Understand object initialization

    The variable obj is assigned a new Object instance, so it is not null.
  2. Step 2: Check assertion behavior

    assertNull(obj) expects null, but obj is not null, so the assertion fails.
  3. Final Answer:

    assertNull fails because obj is not null -> Option D
  4. Quick Check:

    assertNull(non-null) fails test [OK]
Hint: assertNull fails if object is created (not null) [OK]
Common Mistakes:
  • Assuming assertNull passes with any object
  • Confusing assertion failure with syntax error
  • Expecting exceptions instead of assertion failure
5. You have a method getUserEmail() that returns a String email or null if no email is set. Which JUnit assertions correctly test that the email is present and not empty?
hard
A. assertNotNull(email); assertTrue(!email.isEmpty());
B. assertNull(email); assertTrue(email.isEmpty());
C. assertNotNull(email); assertNull(email.isEmpty());
D. assertNull(email); assertFalse(email.isEmpty());

Solution

  1. Step 1: Check for non-null email

    Use assertNotNull(email) to ensure email is not null (exists).
  2. Step 2: Check email is not empty string

    Use assertTrue(!email.isEmpty()) to confirm email has characters.
  3. Final Answer:

    assertNotNull(email); assertTrue(!email.isEmpty()); -> Option A
  4. Quick Check:

    Not null and not empty = assertNotNull(email); assertTrue(!email.isEmpty()); [OK]
Hint: Check not null first, then check string is not empty [OK]
Common Mistakes:
  • Using assertNull when expecting a value
  • Checking isEmpty on null causing exceptions
  • Mixing assertNull with isEmpty checks incorrectly
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