0
0
JUnittesting~10 mins

@NullSource and @EmptySource in JUnit - Test Execution Trace

Choose your learning style9 modes available
Test Overview

This test checks a method that processes strings. It verifies the method handles null and empty string inputs correctly by using @NullSource and @EmptySource annotations in JUnit.

Test Code - JUnit 5
JUnit
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.NullSource;
import org.junit.jupiter.params.provider.EmptySource;
import static org.junit.jupiter.api.Assertions.*;

public class StringProcessorTest {

    @ParameterizedTest
    @NullSource
    @EmptySource
    void testProcessStringHandlesNullAndEmpty(String input) {
        StringProcessor processor = new StringProcessor();
        String result = processor.process(input);
        assertEquals("default", result);
    }
}

class StringProcessor {
    public String process(String input) {
        if (input == null || input.isEmpty()) {
            return "default";
        }
        return input.trim();
    }
}
Execution Trace - 2 Steps
StepActionSystem StateAssertionResult
1Test starts with input = null from @NullSourceTest environment initialized, no UI involvedCheck if process(null) returns "default"PASS
2Test runs with input = "" (empty string) from @EmptySourceTest environment ready for next inputCheck if process("") returns "default"PASS
Failure Scenario
Failing Condition: Method process does not return "default" for null or empty input
Execution Trace Quiz - 3 Questions
Test your understanding
What inputs does this test method check?
Aonly empty string
Bnull and empty string
Conly null
Drandom strings
Key Result
Using @NullSource and @EmptySource together in parameterized tests helps verify that methods handle null and empty inputs gracefully, which are common edge cases.