0
0
JUnittesting~20 mins

@NullAndEmptySource in JUnit - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
NullAndEmptySource Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of a JUnit test using @NullAndEmptySource with String parameter
Consider this JUnit 5 parameterized test using @NullAndEmptySource. What will be the total number of test invocations executed?
JUnit
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.NullAndEmptySource;

class SampleTest {
    @ParameterizedTest
    @NullAndEmptySource
    void testWithNullAndEmpty(String input) {
        System.out.println(input == null ? "null" : input);
    }
}
A0
B1
C2
D3
Attempts:
2 left
💡 Hint
Think about how many inputs @NullAndEmptySource provides to the test method.
assertion
intermediate
2:00remaining
Correct assertion for @NullAndEmptySource inputs
In a parameterized test using @NullAndEmptySource for a String parameter, which assertion correctly verifies that the input is either null or empty?
JUnit
import static org.junit.jupiter.api.Assertions.*;

@ParameterizedTest
@NullAndEmptySource
void testInput(String input) {
    // Which assertion is correct here?
}
AassertFalse(input == null || input.isEmpty());
BassertNotNull(input);
CassertEquals("", input);
DassertTrue(input == null || input.isEmpty());
Attempts:
2 left
💡 Hint
Remember @NullAndEmptySource provides null and empty string inputs.
🔧 Debug
advanced
2:00remaining
Why does this @NullAndEmptySource test fail with a NullPointerException?
Given this test code, why does it throw a NullPointerException during execution?
JUnit
import static org.junit.jupiter.api.Assertions.*;

@ParameterizedTest
@NullAndEmptySource
void testLength(String input) {
    assertTrue(input.length() == 0);
}
ABecause empty string has no length property.
BBecause input can be null, calling length() on null causes NullPointerException.
CBecause @NullAndEmptySource does not provide any inputs.
DBecause assertTrue is used incorrectly.
Attempts:
2 left
💡 Hint
Think about what happens when input is null and you call a method on it.
🧠 Conceptual
advanced
2:00remaining
Behavior of @NullAndEmptySource combined with @ValueSource
What happens when you combine @NullAndEmptySource with @ValueSource(strings = {"test"}) in a parameterized test method with a String parameter?
JUnit
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.NullAndEmptySource;
import org.junit.jupiter.params.provider.ValueSource;

@ParameterizedTest
@NullAndEmptySource
@ValueSource(strings = {"test"})
void testCombined(String input) {
    System.out.println(input);
}
AThe test runs three times with inputs: null, empty string, and "test".
BThe test runs only once with input "test".
CThe test runs twice with inputs: null and empty string only.
DThe test fails to run due to conflicting annotations.
Attempts:
2 left
💡 Hint
Think about how multiple sources combine in JUnit parameterized tests.
framework
expert
3:00remaining
How does JUnit 5 internally handle @NullAndEmptySource for parameterized tests?
Which statement best describes how JUnit 5 processes the @NullAndEmptySource annotation when running a parameterized test?
AJUnit 5 provides two arguments to the test method: null and an empty string, by internally creating these values as test inputs.
BJUnit 5 reads @NullAndEmptySource and skips the test method if the parameter is not nullable.
CJUnit 5 requires the user to manually provide null and empty string values; @NullAndEmptySource is just a marker.
DJUnit 5 converts @NullAndEmptySource into a single empty string input only.
Attempts:
2 left
💡 Hint
Consider how parameterized tests get their input values from annotations.