Bird
Raised Fist0
JUnittesting~15 mins

assertNull and assertNotNull in JUnit - Build an Automation Script

Choose your learning style10 modes available
Verify assertNull and assertNotNull behavior in JUnit
Preconditions (2)
Step 1: Call a method that returns null
Step 2: Use assertNull to verify the returned value is null
Step 3: Call a method that returns a non-null object
Step 4: Use assertNotNull to verify the returned value is not null
✅ Expected Result: assertNull passes when the value is null, assertNotNull passes when the value is not null
Automation Requirements - JUnit 5
Assertions Needed:
assertNull to check null values
assertNotNull to check non-null values
Best Practices:
Use descriptive test method names
Use @Test annotation for test methods
Keep tests independent and focused
Use clear assertion messages
Automated Solution
JUnit
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import org.junit.jupiter.api.Test;

public class NullCheckTest {

    // Method that returns null
    public String getNullValue() {
        return null;
    }

    // Method that returns a non-null string
    public String getNonNullValue() {
        return "Hello";
    }

    @Test
    public void testAssertNull() {
        String result = getNullValue();
        assertNull(result, "Expected result to be null");
    }

    @Test
    public void testAssertNotNull() {
        String result = getNonNullValue();
        assertNotNull(result, "Expected result to be not null");
    }
}

This test class NullCheckTest has two methods: one returns null, the other returns a string.

The testAssertNull method calls the method returning null and uses assertNull to check the value is null. The assertion message helps understand the failure if it happens.

The testAssertNotNull method calls the method returning a string and uses assertNotNull to check the value is not null.

Each test is independent and clearly named to show what it verifies.

Common Mistakes - 4 Pitfalls
Using assertNull on a non-null value
Not providing assertion messages
Testing multiple unrelated things in one test method
Forgetting @Test annotation on test methods
Bonus Challenge

Now add data-driven testing with 3 different inputs: null, empty string, and a non-empty string

Show Hint

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