Bird
Raised Fist0
JUnittesting~5 mins

assertNull and assertNotNull in JUnit

Choose your learning style10 modes available
Introduction

We use assertNull to check if something is empty or missing. We use assertNotNull to check if something exists or is present.

When you want to make sure a method returns nothing (null) after some action.
When you want to confirm that an object or value is created and not empty.
When testing if a database query returns no result (null) or some data (not null).
When checking if a user input was not provided (null) or was given (not null).
When verifying that a service response is present or missing.
Syntax
JUnit
assertNull(Object actual)
assertNotNull(Object actual)

Both methods come from the org.junit.jupiter.api.Assertions class in JUnit 5.

If the condition fails, the test will stop and show an error.

Examples
This checks that the user's middle name is missing (null).
JUnit
assertNull(user.getMiddleName());
This checks that the database connection is established (not null).
JUnit
assertNotNull(databaseConnection);
This checks that the error message is null and shows a custom message if it is not.
JUnit
assertNull(response.getErrorMessage(), "Error message should be null");
This checks that the API key is present and shows a message if missing.
JUnit
assertNotNull(config.getApiKey(), "API key must be set");
Sample Program

This test class checks if the user's middle name is null or not null using assertNull and assertNotNull.

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

public class UserTest {

    static class User {
        private String middleName;
        public String getMiddleName() { return middleName; }
        public void setMiddleName(String middleName) { this.middleName = middleName; }
    }

    @Test
    void testMiddleNameIsNull() {
        User user = new User();
        assertNull(user.getMiddleName());
    }

    @Test
    void testMiddleNameIsNotNull() {
        User user = new User();
        user.setMiddleName("Lee");
        assertNotNull(user.getMiddleName());
    }
}
OutputSuccess
Important Notes

Use assertNull when you expect no value (null).

Use assertNotNull when you expect a value to be present.

Adding a message helps understand test failures quickly.

Summary

assertNull checks if a value is null (empty).

assertNotNull checks if a value is not null (exists).

Both help confirm expected presence or absence of data in tests.

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