@NullAndEmptySource is a composed source that combines @NullSource and @EmptySource.
@NullAndEmptySource
@NullSource
@EmptySource
package org.junit.jupiter.params.provider; ........ @Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented @API(status = STABLE, since = "5.7") @NullSource @EmptySource public @interface NullAndEmptySource {}
package com.logicbig.example; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.NullAndEmptySource; import static org.junit.jupiter.api.Assertions.assertTrue; public class ParameterizedNullAndEmptySourceTest { @ParameterizedTest(name = "#{index} null or empty provided -> '{0}'") @NullAndEmptySource void nullOrEmpty(String input) { assertTrue(input == null || input.isEmpty()); } }
mvn test -Dtest=ParameterizedNullAndEmptySourceTest
D:\example-projects\junit-5\junit-5-parameterized-tests\junit-5-parameterized-nullandemptysource>mvn test -Dtest=ParameterizedNullAndEmptySourceTest[INFO] Scanning for projects...[INFO] [INFO] ---< com.logicbig.example:junit-5-parameterized-nullandemptysource >----[INFO] Building junit-5-parameterized-nullandemptysource 1.0-SNAPSHOT[INFO] from pom.xml[INFO] --------------------------------[ jar ]---------------------------------[INFO] [INFO] --- resources:3.3.1:resources (default-resources) @ junit-5-parameterized-nullandemptysource ---[INFO] skip non existing resourceDirectory D:\example-projects\junit-5\junit-5-parameterized-tests\junit-5-parameterized-nullandemptysource\src\main\resources[INFO] [INFO] --- compiler:3.14.1:compile (default-compile) @ junit-5-parameterized-nullandemptysource ---[INFO] No sources to compile[INFO] [INFO] --- resources:3.3.1:testResources (default-testResources) @ junit-5-parameterized-nullandemptysource ---[INFO] skip non existing resourceDirectory D:\example-projects\junit-5\junit-5-parameterized-tests\junit-5-parameterized-nullandemptysource\src\test\resources[INFO] [INFO] --- compiler:3.14.1:testCompile (default-testCompile) @ junit-5-parameterized-nullandemptysource ---[INFO] Recompiling the module because of changed source code.[INFO] Compiling 1 source file with javac [debug target 25] to target\test-classes[INFO] [INFO] --- surefire:3.5.0:test (default-test) @ junit-5-parameterized-nullandemptysource ---[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider[INFO] [INFO] -------------------------------------------------------[INFO] T E S T S[INFO] -------------------------------------------------------[INFO] +--com.logicbig.example.ParameterizedNullAndEmptySourceTest - 0.116 ss[INFO] | +-- [OK] nullOrEmpty(String) #1 null or empty provided -> {0} - 0.042 ss[INFO] | '-- [OK] nullOrEmpty(String) #2 null or empty provided -> {0} - 0.002 ss[INFO] [INFO] Results:[INFO] [INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0[INFO] [INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 3.091 s[INFO] Finished at: 2025-12-04T15:34:17+08:00[INFO] ------------------------------------------------------------------------
Dependencies and Technologies Used:
Version compatibilities of junit-jupiter-engine with this example:
Versions in green have been tested.